如何编写查询以确定列值是唯一的?
答案 0 :(得分:25)
试试这个:
SELECT CASE WHEN count(distinct col1)= count(col1)
THEN 'column values are unique' ELSE 'column values are NOT unique' END
FROM tbl_name;
注意:这仅适用于' col1'没有数据类型  ntext'或者' text'。如果您有这些数据类型之一,请使用“不同的CAST(col1 AS nvarchar(4000))' (或类似的)而不是' distinct col1'。
答案 1 :(得分:16)
select count(distinct column_name), count(column_name)
from table_name;
如果唯一值的数量等于值的总数,则所有值都是唯一的。
答案 2 :(得分:7)
IF NOT EXISTS (
SELECT
column_name
FROM
your_table
GROUP BY
column_name
HAVING
COUNT(*)>1
)
PRINT 'All are unique'
ELSE
PRINT 'Some are not unique'
如果要列出那些不唯一的,只需执行内部查询并运行它。 HTH。
答案 3 :(得分:2)
通过以下查询,您不仅可以查看列是否唯一,还可以查看哪种组合最不唯一。此外,因为您仍然看到频率1是您的密钥是唯一的,您知道您的结果是好的,而不是简单地丢失;使用HAVING子句时,某些东西不太清楚。
SELECT Col1, Col2, COUNT(*) AS Freq
FROM Table
GROUP BY Col1, Col2
ORDER BY Freq DESC
答案 4 :(得分:1)
如果您想检查所有值是否唯一和,您需要关注NULL
值,请执行以下操作:
select (case when count(distinct column_name) = count(column_name) and
(count(column_name) = count(*) or count(column_name) = count(*) - 1)
then 'All Unique'
else 'Duplicates'
end)
from table t;
答案 5 :(得分:0)
您是否尝试仅返回列的不同值?如果是这样,您可以使用DISTINCT关键字。语法是:
SELECT DISTINCT column_name,column_name
FROM table_name;
答案 6 :(得分:-1)
在COUNT聚合函数中使用DISTINCT关键字,如下所示:
SELECT COUNT(DISTINCT column_name) AS some_alias FROM table_name
上述查询将为您提供该列中不同值的计数。