MySQL:删除连续的重复值

标签 mysql ruby-on-rails activerecord

我有一个 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/

相关文章:

MySQL - 更新列中字符串的一部分

ruby-on-rails - #<ActionDispatch::Routing::Mapper:0x007fd3b4516a00> 的未定义局部变量或方法 `on'

php - Yii框架2.0 Active Record选择具有一定条件的记录

mysql - 具有 has_many 关联的 Ruby ActiveRecord 查询

ruby-on-rails - 你对使用 Rails 脚手架生成器的看法

mysql - 事件记录表_存在吗?句法

ruby-on-rails-4 - 获取 Rails 中第一条记录的 "id"的最有效方法

mysql - 按版本号选择对象

php - 如何在html表中显示原始sql查询输出

php - 使用 MYSQL 和 PHP 循环输出帖子流和相​​关评论