SQL筛选只显示在一列中具有值的行会出现多次

  • 本文关键字:显示 筛选 一列 SQL sql
  • 更新时间 :
  • 英文 :


假设我有一个数据集,看起来像下面的

C1 | C2 | C3 | C4 | C5
1   NA  NA  NA      34
2   NA  NA  NA      39
3   NA  NA  NA      29
4   NA  NA  NA      17
5   NA  NA  NA      17
6   NA  NA  NA      34

如果我只想返回C5中存在重复项的行,我该怎么做?所以我想要第1行和第6行,以及第4行和第5行。

一个简单的方法是exists:
select t.*
from t
where exists (select 1 from t t2 where t2.c5 = t.ct and t2.c1 <> t.c1);

您也可以使用窗口功能:

select t.*
from (select t.*, count(*) over (partition by c5) as cnt
from t
) t
where cnt >= 2;

最新更新