您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在选择查询(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。因此,不应在一个表达式中分配变量,而后在另一个表达式中使用变量-应该在单个表达式中分配变量。

MySQL 2022/1/1 18:30:55 有539人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶