mysql - 如何在 Mysql 中压缩连续的重复行?

标签 mysql sql

在 mysql 数据库中,如何在保持选择输出顺序的同时将所有连续的重复项压缩为 1?

数据:

id  fruit
----------
1   Apple
2   Banana
3   Banana
4   Banana
5   Apple
6   Mango
7   Mango
8   Apple

我想要的输出:

fruit
-------
Apple
Banana
Apple
Mango
Apple

在 unix 中使用 uniq 命令很容易做到这一点,但 'distinct' 不那么灵活。 ID 不是连续的,并且可能存在间隙。我在我的例子中过于简单化了。 选择可能是这样的:

数据:

id  fruit
----------
100  Apple
2    Banana
30   Banana
11   Banana
50   Apple
62   Mango
7    Mango
4    Apple

最佳答案

试试这个 - 假设连续 ID 没有间隙。

SELECT T.fruit
FROM YOURTABLE T
LEFT JOIN YOURTABLE T2
ON T2.ID = T.ID + 1
WHERE T2.fruit <> T.fruit
OR T2.ID IS NULL
ORDER BY T.ID

关于mysql - 如何在 Mysql 中压缩连续的重复行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6011642/

相关文章:

mysql lib_msqludf_json 错误 : Can't initialize function 'json_object' ; Invalid json member name - name cannot be empty

php - 我如何称呼文件的名称

sql - Oracle 连接查询

java - 三级嵌套循环查询不会运行外循环

MySql "comments"参数作为描述符?

php - ExtJS 网格表单与 MySQL 中的文档

mysql - 从按 id 组排序的行中获取最高(或最低)结果?

java - 我怎样才能检测到mysql的变化?

javascript - 如何使用 PHP/JavaScript 从客户端停止 SQL 查询执行?

sql - 在两个多对多关系之间进行选择