如果表中有重复记录,如何返回 True ,如果表中没有重复记录,则返回 False 。
我不需要计数,不需要知道哪些行,我只想知道此表是否重复。就是这样。
答案 0 :(得分:1)
如果您不想列出列,那么这是一种方法:
select (count(*) <> num_distinct) as has_duplicates
from t cross join
(select count(*) as num_distinct
from (select distinct * from t) t
) tt;
如果您有主键,那么更有效的方法是:
select (count(*) <> count(distinct pk)) as has_duplicates
from t;
使用主键的相对有效的方法是:
select (count(*) = 1) as has_duplicates
from (select t.*
from t
where exists (select 1 from t t2 where t2.pk = t.pk and t2.? <> t.?)
fetch first 1 row only
) t;
?
用于表示您关心的重复项。
答案 1 :(得分:-1)
您可以尝试
SELECT COUNT(*) > 1
FROM T
GROUP BY C1,C2...