如何在Oracle的表中找到重复的值?
时间:2020-03-05 18:52:18 来源:igfitidea点击:
什么是最简单的SQL语句,它将返回给定列的重复值及其在Oracle数据库表中的出现次数?
例如:我有一个带有JOB_NUMBER列的JOBS表。如何确定我是否有任何重复的" JOB_NUMBER",以及它们被重复了多少次?
解决方案
回答
select column_name, count(column_name) from table group by column_name having count (column_name) > 1;
回答
我能想到的最简单的方法是:
select job_number, count(*) from jobs group by job_number having count(*) > 1;
回答
怎么样:
SELECT <column>, count(*) FROM <table> GROUP BY <column> HAVING COUNT(*) > 1;
为了回答上面的示例,它看起来像:
SELECT job_number, count(*) FROM jobs GROUP BY job_number HAVING COUNT(*) > 1;
回答
正在做
select count(j1.job_number), j1.job_number, j1.id, j2.id from jobs j1 join jobs j2 on (j1.job_numer = j2.job_number) where j1.id != j2.id group by j1.job_number
将为我们提供重复的行的ID。
回答
其他方式:
SELECT * FROM TABLE A WHERE EXISTS ( SELECT 1 FROM TABLE WHERE COLUMN_NAME = A.COLUMN_NAME AND ROWID < A.ROWID )
当" column_name"上有索引时,工作正常(足够快)。这是删除或者更新重复行的更好方法。
回答
如果我们不需要知道重复的实际数量,则甚至不需要在返回的列中进行计数。例如
SELECT column_name FROM table GROUP BY column_name HAVING COUNT(*) > 1