这个问题已经在这里有了答案 :
如何在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
使用:
SELECT t.ctn_no FROM YOUR_TABLE t GROUP BY t.ctn_no HAVING COUNT(t.ctn_no) > 1
…将为您显示ctn_no表中重复的值。在WHERE中添加条件将使您可以进一步调整存在哪些重复项:
ctn_no
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