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

MySQL-各GROUPBYのX番号を返します

    以下のように各グループの行番号を生成し、グループごとに2つの結果を表示するimより下の行番号を制限してみてください。

       Select
        `marka_name`, `model_name`, `kuzov`, `mileage`, `year`, `rate`from
        (
    
        SELECT
         @row_num := IF(@prev_value=main.Model_Name,@row_num+1,1) AS RowNumber,
                    main.*,
        @prev_value := main.Model_Name
                FROM
                    main,
          (SELECT @row_num := 1) x,
              (SELECT @prev_value := '') y
                WHERE
                    (
                        (marka_name = 'SUBARU' AND model_name = 'IMPREZA' AND (kuzov = 'GC8' OR kuzov = 'GF8')) OR
                        (marka_name = 'MAZDA' AND model_name = 'RX-7' AND kuzov = 'FD3S') OR
                        (marka_name = 'MITSUBISHI' AND model_name = 'LANCER' AND (kuzov = 'CN9A' OR kuzov = 'CP9A')) OR
                        (marka_name = 'NISSAN' AND model_name = 'SKYLINE' AND (kuzov = 'ER34' OR kuzov = 'BCNR33')) OR
                        (marka_name = 'NISSAN' AND model_name = 'SILVIA' AND kuzov = 'S14') OR
                        (marka_name = 'TOYOTA' AND model_name = 'CELICA' AND kuzov = 'ST205') OR
                        (marka_name = 'TOYOTA' AND model_name = 'ARISTO' AND kuzov = 'JZS161') OR
                        (marka_name = 'MITSUBISHI' AND model_name = 'DELICA' AND (kuzov = 'PE8W' OR kuzov = 'PD8W' OR kuzov = 'PF8W'))
                    )
                    AND
                    (rate != 'RA' AND rate != 'RR' AND rate != 'A1' AND rate != 'A' AND rate != 'R' AND rate >= '3')
                    AND
                    (mileage >= 0 AND mileage <= 150000)
                    AND
                    (year >= 1990 AND year <= 1998)
                ORDER BY
                    model_name,
                    mileage ASC,
                    rate DESC) A where A.RowNumber<=2
    

    グループごとに2つ以上のレコードを取得するには、グループごとに10の結果をアリする場合のように、最後のレコードを変更します。 A.RowNumber <=10

    の場所に書き込みます

    SQLフィドルデモ




    1. pl/sql配列の戻り値をJavaでフェッチする

    2. Oracleに対するJavaのPreparedStatementの質問

    3. SQLServer2008で通知を変更する

    4. OracleとSQLServerのスペースの処理の違い