sql >> データベース >  >> RDS >> Mysql

グループに基づいてmysqlの行を列挙します

    MySQL 8に一般的なテーブル式が導入される前は、GLの最初の方法が最速でしたが、楽しみのために、他のいくつかのアイデア(これも古いテクノロジーを使用)を示します...

    1.

    SELECT x.*
         , COUNT(*) rank 
      FROM my_table x 
      JOIN my_table y 
        ON y.a = x.a 
       AND y.b <= x.b 
     GROUP  
        BY x.a
         , x.b;
    

    2.

    SELECT x.* 
         , FIND_IN_SET(b,n) rank 
      FROM my_table x 
      JOIN 
         ( SELECT a 
                , GROUP_CONCAT(b ORDER BY b) n 
             FROM my_table 
            GROUP 
               BY a
         ) y 
        ON y.a = x.a;
    


    1. PostgreSQLのチェック制約を理解する

    2. DatabaseHelperはいつ閉じる必要がありますか?

    3. PythonでMySQLdbを使用してmysqlで挿入した後、どのようにして安全かつ効率的に行IDを取得しますか?

    4. MySQLにリモートで接続する