检查表中的所有行是否具有列的唯一值

时间:2015-01-25 04:51:34

标签: mysql sql

如何 检查表格中的所有行是否都具有列的唯一值 在MySQL的表中使用char数据类型并将值返回为yesno

3 个答案:

答案 0 :(得分:1)

您可以尝试这样的操作,其中?是您要检查的列:

SELECT IF(t.total = t.total_distinct, 'YES', 'NO') AS result
FROM ( SELECT COUNT(*) AS total
            , COUNT(DISTINCT ?) AS total_distinct
       FROM tbl
) t

答案 1 :(得分:1)

如果您忽略NULL个值,则可以只比较count()count(distinct)

select (case when count(col) = count(distinct col) then 'All Unique' else 'Duplicates' end)
from table t;

如果NULL值是一个问题(因此最多允许NULL一次),那么您可以汇总并查看最大数量:

select (case when max(cnt) = 1 then 'All Unique' else 'Duplicates' end)
from (select col, count(*) as cnt
      from table t
      group by col
     ) col

答案 2 :(得分:0)

我会选择Gordon的第一个版本的答案,但是按表格的主键分组。换句话说:

select  primary_key_field, (case when count(col) = count(distinct col) then 'All Unique' else 'Duplicates' end)
from table t
group by primary_key_field.