SQL查询以确定列中的值是唯一的
如何编写查询以确定列中的值是唯一的?是否仅尝试返回列的不同值?如果是这样,您可以使用DISTINCT关键字。语法是:SQL查询以确定列中的值是唯一的,sql,sql-server,tsql,Sql,Sql Server,Tsql,如何编写查询以确定列中的值是唯一的?是否仅尝试返回列的不同值?如果是这样,您可以使用DISTINCT关键字。语法是: SELECT DISTINCT column_name,column_name FROM table_name; 如果唯一值的总数等于值的总数,则所有值都是唯一的。在计数聚合函数中使用DISTINCT关键字,如下所示: SELECT COUNT(DISTINCT column_name) AS some_alias FROM table_name 上面的查询将为您提供该列中不
SELECT DISTINCT column_name,column_name
FROM table_name;
如果唯一值的总数等于值的总数,则所有值都是唯一的。在计数聚合函数中使用DISTINCT关键字,如下所示:
SELECT COUNT(DISTINCT column_name) AS some_alias FROM table_name
上面的查询将为您提供该列中不同值的计数
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'
如果您想列出那些不是唯一的,只需获取内部查询并运行它。嗯。试试这个:
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”时有效。如果您有这些数据类型之一,请使用“distinct CASTcol1 AS nvarchar4000”或类似的数据类型,而不是“distinct col1”。如果要检查所有值是否唯一,并且您关心空值,请执行以下操作:
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;
使用下面的查询,您不仅可以查看列是否唯一,还可以查看哪种组合最不唯一。此外,因为你仍然看到频率1是唯一的,你知道你的结果是好的,而不是简单地丢失;使用HAVING子句时,有些地方不太清楚
SELECT Col1, Col2, COUNT(*) AS Freq
FROM Table
GROUP BY Col1, Col2
ORDER BY Freq DESC
不是真的返回,只是确定。我也很困惑,但这就是被问到的问题,因此我想知道如何编写这样的查询。您可以使用以下内容:选择Column1,Column2,按Column1从表组中计数,Column2的计数大于1,如果返回的值有任何值,这些值是非唯一值。您是否试图确定所有值都是唯一的?是的,如果不相同,则更重要的是所有列都是唯一的或不相关的:+1。我想补充一点,这个解决方案不会检测重复的空值;它只适用于非空值。根据@GordonLinoff注释,我建议修改此答案,以考虑相关列为空的记录。
SELECT Col1, Col2, COUNT(*) AS Freq
FROM Table
GROUP BY Col1, Col2
ORDER BY Freq DESC
select (case when count(distinct column1 ) = count(column1)
then 'Unique'
else 'Duplicates'
end)
from table_name