Sql server 如何识别SQL Server中哪些列具有不同的值
我有一个超过100列的表,在正常情况下,Sql server 如何识别SQL Server中哪些列具有不同的值,sql-server,tsql,Sql Server,Tsql,我有一个超过100列的表,在正常情况下,contract\u id在这个表中应该是唯一的,但有时会有重复的值。我使用此SQL语句从此表中检索数据: select distinct contract_id, col1, col2,...colM from the_table; 但是我发现了contract\u id值,我知道在同一列中应该有一些值是不同的,我能不能找到一种方法来找出所有这些具有不同值的列导致我看到重复的contract\u id,即使我使用了distinct,因为有很多字段,只
contract\u id
在这个表中应该是唯一的,但有时会有重复的值。我使用此SQL语句从此表中检索数据:
select distinct contract_id, col1, col2,...colM
from the_table;
但是我发现了contract\u id
值,我知道在同一列中应该有一些值是不同的,我能不能找到一种方法来找出所有这些具有不同值的列导致我看到重复的contract\u id
,即使我使用了distinct,因为有很多字段,只有少数列具有不同的值。手动逐个比较每一列是很困难的。试试看
SELECT contract_id
FROM the_table
GROUP BY contract_id
HAVING COUNT(contract_id)>1;
或
第一个将向您显示所有合同id
值,这些值至少出现两次,第二个将向您显示所有可能要操作的行(删除/更改)
注意:我在OVER()
子句的顺序中使用了选择NULL
。在此处使用fittingORDER BY
子句非常重要。这将负责哪一行获得数字1,哪一行获得递增的数字,并将显示在结果中,因为>1
WITH NumberedRows AS
(
SELECT ROW_NUMBER() OVER(PARTITION BY contract_id ORDER BY(SELECT NULL)) AS RowNumber
,*
FROM the_table
)
SELECT *
FROM NumberedRows
WHERE RowNumber>1;