Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询以确定列中的值是唯一的_Sql_Sql Server_Tsql - Fatal编程技术网

SQL查询以确定列中的值是唯一的

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 上面的查询将为您提供该列中不

如何编写查询以确定列中的值是唯一的?

是否仅尝试返回列的不同值?如果是这样,您可以使用DISTINCT关键字。语法是:

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