一尘不染

在列中查找重复的条目[duplicate]

sql

这个问题已经在这里有了答案

如何在Oracle的表中找到重复的值? (13个回答)

5年前关闭。

我正在编写此查询以在表1中查找重复的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

阅读 142

收藏
2021-03-17

共1个答案

一尘不染

使用:

  SELECT t.ctn_no
    FROM YOUR_TABLE t
GROUP BY t.ctn_no
  HAVING COUNT(t.ctn_no) > 1

…将为您显示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

如果要查看与重复项关联的其他列值,则需要使用自连接:

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
2021-03-17