簡體   English   中英

如何在SQL中選擇具有重復列值的所有行

[英]How to select all rows with duplicated column value in SQL

我在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

由於這篇文章 ,我可以選擇所有重復的col1值

SELECT col1
FROM mytable
GROUP BY col1
HAVING ( COUNT(col1) > 1 )

如何選擇所有具有重復col1值的行並按col1對其進行排序? 預期結果如下所示:

co1, col2, col3
a, d, f
a, b, c
e, g, h
e, s, t
e, k, t

使用EXISTS

SELECT *
FROM   mytable a
WHERE  EXISTS (SELECT 1
               FROM   mytable b
               WHERE  a.col1 = b.col1
               HAVING Count(col1) > 1) 
Order by col1

其他方式

SELECT *
FROM   (SELECT *,
               Count(1)OVER( partition BY col1) AS cnt
        FROM   mytable) a
WHERE  cnt > 1
ORDER  BY col1 

您可以為此使用窗口函數:

select co1, col2, col3
from (
  select co1, col2, col3, count(*) over (partition by col1) as cnt
  from the_table
) t
where cnt > 1
order by col1;

您可以將結果與原始表進行Inner Join ,如下所示:

select t1.* 
from your_table t1
inner join (
    select col1
    from your_table
    group by col1
    having count(col1) > 1 ) t2
on t1.col1 = t2.col1
order by t1.col1;
Select * 
From ( Select * ,count(*) over (Partition By Col1) as cnt from t) t
Where cnt>1
        Select co1,col2,col3 From 
    ( Select * ,count(*) over (Partition By Co1) as cnt from #b) a
 Where cnt>1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM