例如,我有以下表格:
id user_id name age address
1 12 John 21 earth
2 13 Daniel 19 planet
3 12 Paul 25 here
4 11 Joana 23 mars
5 11 Paul 18 earth
我想要的结果:
id user_id name age address
1 12 John 21 earth
3 12 Paul 25 here
4 11 Joana 23 mars
5 11 Paul 18 earth
基本上,我想显示user_id列中重复值的所有行。我是SQL的新手,希望你们能帮助我。提前谢谢。
你可以这样做:
select * from your_table where user_id in (
select user_id from your_table
group by user_id having count(*) > 1
)
我推荐exists
:
select t.*
from t
where exists (select 1 from t t2 where t2.user_id = t.user_id and t2.id <> t.id)
order by user_id, id;
一般来说,为了性能考虑,最好避免在子查询中使用聚合函数。