考虑此表:
+-----+--------+
| id | value |
+-----+--------+
| 1 | 22 |
+-----+--------+
| 2 | 12 |
+-----+--------+
| 3 | 22 |
+-----+--------+
| 4 | 22 |
+-----+ -------+
我可以选择列value
重复的所有内容,如下所示:
select value from table having count(value) > 1 ;
这将输出Ids
1,3和4。
我尝试做的是选择重复的地方,但是留下1(一)个未选中的副本,所以上面只输出Ids
3和4(或1和3等等)。 。重复省略无关紧要,只有它是。
我怎样才能做到这一点?
这个问题不是
的重复答案 0 :(得分:0)
您可以使用聚合函数来过滤id的值,并选择所有其他的
select * from table
where (value, id) not in (
select value, max(id)
from table
group by value
having count(value) > 1
)
;
答案 1 :(得分:0)
你可以这样做:
select *
from test t1
where exists (select 1
from test t2
where t2.value = t1.value
having count(value)>1)
limit 2
OR:
select t1.*
from test t1 inner join
(select value from test t2 having count(value)>1) t2
on t1.value = t2.value
limit 2;