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

列の値が変更されたときのMysqlselect行

    MySQL user defined variables この場合に役立ちます。

    新しいステータスが表示されるたびに、1を割り当てます 対応する行の行番号として。

    また、前の行と同じステータスが表示された場合は、代わりに増分行番号を割り当ててください。

    このようにして、row number = 1のレコードを最終的にフィルタリングできます。 それだけ。これらの特定のレコードは、直前の行と比較して実際に違いを示しています

    SELECT 
    *
    FROM 
    (
     SELECT 
      *,
      IF(@prevStatus = YT.status_1, @rn := @rn + 1,
        IF(@prevStatus := YT.status_1, @rn := 1, @rn := 1)
      ) AS rn
     FROM your_table YT
     CROSS JOIN 
     (
      SELECT @prevStatus := -1, @rn := 1
     ) AS var 
     ORDER BY YT.ID
    ) AS t
    WHERE t.rn = 1
    ORDER BY t.ID
    


    1. PHPはselectステートメントを割り当ててリスト値をドロップダウンします

    2. EDBがPostgres市場のリーダーになった経緯

    3. エントリを削除しないでください。良いアイデア?いつもの?

    4. このクエリを最適化する方法(4 mmのテーブルが含まれます)