如果存在重复项,则返回布尔值

时间:2018-11-07 16:39:57

标签: sql boolean snowflake

如果表中有重复记录,如何返回 True ,如果表中没有重复记录,则返回 False

  

我不需要计数,不需要知道哪些行,我只想知道此表是否重复。就是这样。

2 个答案:

答案 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...