在列中查找重复条目

anw*_*rma 41 sql oracle subquery

我正在编写此查询以查找table1中的重复CTN记录.所以我的想法是,如果CTN_NO出现超过两次或更高,我希望它在我的SELECT*语句输出中显示在顶部.

我尝试了以下子查询逻辑,但我需要拉动

  SELECT *
         table1 
   WHERE S_IND='Y'
     and CTN_NO = (select CTN_NO 
                     from table1 
                    where S_IND='Y' 
                      and count(CTN_NO) < 2);
order by 2
Run Code Online (Sandbox Code Playgroud)

OMG*_*ies 103

使用:

  SELECT t.ctn_no
    FROM YOUR_TABLE t
GROUP BY t.ctn_no
  HAVING COUNT(t.ctn_no) > 1
Run Code Online (Sandbox Code Playgroud)

...将显示ctn_no表格中有重复的值.向WHERE添加条件将允许您进一步调整存在的重复项:

  SELECT t.ctn_no
    FROM YOUR_TABLE t
   WHERE t.s_ind = 'Y'
GROUP BY t.ctn_no
  HAVING COUNT(t.ctn_no) > 1
Run Code Online (Sandbox Code Playgroud)

如果要查看与副本关联的其他列值,您将需要使用自联接:

SELECT x.*
  FROM YOUR_TABLE x
  JOIN (SELECT t.ctn_no
          FROM YOUR_TABLE t
      GROUP BY t.ctn_no
        HAVING COUNT(t.ctn_no) > 1) y ON y.ctn_no = x.ctn_no
Run Code Online (Sandbox Code Playgroud)

  • 添加自联接是一个非常有用的补充. (2认同)