考虑这个表:
+-----+--------+
| id | value |
+-----+--------+
| 1 | 22 |
+-----+--------+
| 2 | 12 |
+-----+--------+
| 3 | 22 |
+-----+--------+
| 4 | 22 |
+-----+ -------+
我可以选择所有重复的列value
,如下所示:
select value from table having count(value) > 1 ;
这将输出 Id
1,3 和 4。
我试图做的是选择重复项,但保留 1(一)个重复项未选择,因此上面的代码将仅输出 Ids
3 和 4(或 1 和 3 等)。 ..重复的省略并不重要,重要的是它是。
我怎样才能实现这个目标?
这个问题不是重复的
最佳答案
您可以使用聚合函数来过滤 id 的值并选择所有其他值
select * from table
where (value, id) not in (
select value, max(id)
from table
group by value
having count(value) > 1
)
;
关于Mysql 选择 N 个重复项,省略 1 个重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44373672/