假设我有一个包含两列的数据库,一个id(bigint)和一个text(text)。我想查找数据库中具有多个行中出现的id的所有行。我怎么能这样做?
示例:
1; foo
2; bar
3; baz
2; fubar
4; blah
3; bleh
期望的输出:
2; bar
2; fubar
3; baz
3; bleh
我对SQL很新。我有一个想法,我想要的东西
SELECT id,text FROM mytable ORDER BY id ASC;
但我不知道如何消除id唯一的行。我基本上需要SELECT DISTINCT
的反面。提前谢谢!
答案 0 :(得分:4)
您可以使用窗口函数执行此操作:
select id, text
from (select t.*, count(*) over (partition by id) as cnt
from table t
) t
where cnt > 1;
答案 1 :(得分:1)
这样的事情:
WITH more_than_one AS (SELECT id,count(*) FROM table1 GROUP BY id HAVING count(*) > 1)
SELECT * FROM table1 JOIN more_than_one ON table1.id = more_than_one.id;