我有一个 MySQL 表,它返回一个值列表,其中包含连续 重复项(按时间戳排序)。
比如我在查询的时候只需要返回连续重复的值:
[1, "Yellow"]
[2, "Yellow"]
[3, "Green"]
[5, "Black"]
[6, "Green"]
[7, "Green"]
此处的数字仅供引用 - 该值实际上是字符串“Green”,因此对于上述情况,新的未复制列表将是:
[1, "Yellow"]
[3, "Green"]
[5, "Black"]
[6, "Green"]
有没有一种聪明的方法可以用 MySQL 处理这个问题?
使用 Rails/ActiveRecord,这并没有什么不同,但我可以通过 manipulating an Array 做到这一点, 只是想知道是否有更聪明的方法来处理这个问题。
最佳答案
解决此类问题的一种方法是使用带有用户变量的子查询。您可以使用 user 变量跟踪上一行的颜色值,然后在外部查询的 where 子句中使用 user 变量来过滤您返回的行。
尝试这样的事情:
select id,this_color as color
from
(
select id,@last as last_color,@last:=color as this_color
from your_table
order by id
) as sub
where this_color != last_color
关于MySQL:删除连续的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5085849/