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

選択クエリ(MySQL)ですべての重複ではなく、連続した重複のみを削除するにはどうすればよいですか?

    前の値を取得したい。日付に実際にギャップや重複がない場合は、次のようにします。

    select t.*
    from t left join
         t tprev
         on t.col1 = date_add(tprev.col1, interval 1 day)
    where tprev.col2 is null or tprev.col2 <> t.col2;
    

    編集:

    日付がこれらの条件を満たさない場合は、変数を使用できます:

    select t.*
    from (select t.*,
                 (@rn := if(@v = col2, @rn + 1,
                            if(@v := col2, 1, 1)
                           )
                 ) as rn
          from t cross join
               (select @v := 0, @rn := 0) params
          order by t.col1
         ) t
    where rn = 1;
    

    MySQLは、SELECTの式の評価の順序を保証しないことに注意してください。 。したがって、変数を1つの式に割り当ててから別の式で使用するのではなく、単一の式で割り当てる必要があります。



    1. データベースとは何ですか?定義、タイプ、およびコンポーネント

    2. Django:バッファリングされていないmysqlクエリ

    3. JDBCResultSetgetDateは精度を失います

    4. mysql経由でphpを実行しますか?