如何在SQL中选择具有重复列值的所有行

Nic*_*Nic 1 sql sql-server

我有一张在 col1 中有一些重复的表格:

co1, col2, col3
a, d, f
r, h, d
e, g, h
z, k, m
e, s, t
a, b, c
e, k, t
Run Code Online (Sandbox Code Playgroud)

感谢这篇文章,我可以选择所有重复的 col1 值

SELECT col1
FROM mytable
GROUP BY col1
HAVING ( COUNT(col1) > 1 )
Run Code Online (Sandbox Code Playgroud)

如何选择具有重复 col1 值的所有行并按 col1 对其进行排序?预期结果如下所示:

co1, col2, col3
a, d, f
a, b, c
e, g, h
e, s, t
e, k, t
Run Code Online (Sandbox Code Playgroud)

Pரத*_*ீப் 5

EXISTS

SELECT *
FROM   mytable a
WHERE  EXISTS (SELECT 1
               FROM   mytable b
               WHERE  a.col1 = b.col1
               HAVING Count(col1) > 1) 
Order by col1
Run Code Online (Sandbox Code Playgroud)

其它的办法

SELECT *
FROM   (SELECT *,
               Count(1)OVER( partition BY col1) AS cnt
        FROM   mytable) a
WHERE  cnt > 1
ORDER  BY col1 
Run Code Online (Sandbox Code Playgroud)