我想做类似的事情,但是出错会请提出一些好的方法吗?
select A,B,C, count(Distinct A,B,C)
from table_name
group by A,B,C
having count(Distinct A,B,C) > 1
基本上我有一个列(A,B,C)的索引,有些行没有这个独特的组合集,所以我尝试了类似的查询来识别违反唯一约束的行。如果有最好的方式,请告诉我
答案 0 :(得分:10)
如果您按这些列进行分组,那么您只能获取这些唯一记录,然后您可以使用count(*)
来获取您拥有的重复数量
select A,B,C, count(*)
from table_name
group by A,B,C
HAVING count(*) > 1
答案 1 :(得分:2)
@jurgend说的是对的,你可以进一步找到确切的行(我假设还有更多的字段需要查看,包括可能是PK)
SELECT *
FROM table_name
WHERE (A,B,C) IN (
SELECT A, B, C
FROM table_name
GROUP BY A, B, C
HAVING COUNT(*) > 1
)
Tuple IN
列表查询在Oracle中有效,但不是所有其他DBMS。