显示单列中所有重复的行

  • 本文关键字:单列中 显示 mysql sql
  • 更新时间 :
  • 英文 :


例如,我有以下表格:

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;

一般来说,为了性能考虑,最好避免在子查询中使用聚合函数。

最新更新