如何 检查表格中的所有行是否都具有列的唯一值
在MySQL的表中使用char数据类型并将值返回为yes
或no
?
答案 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.