如何识别SQL Server中哪些列具有不同的值

时间:2019-05-09 05:40:35

标签: sql-server tsql

我有一个表,该表具有100多个列,在正常情况下,Survey.find( { question: { $elemMatch: { id: device[0].question.questionID } } } , function(err, res){ if(err){ console.log(err); } else { console.log(res); } }) 在该表中应该是唯一的,但是有时会有重复的值。我使用以下SQL语句从此表中检索数据:

<script type="text/javascript">
  document.getElementsByClassName("ChangeDomain").onclick = function() {
    const preUrl = document.getElementsByClassName("ChangeDomain").href;
    const newUrl = preUrl.replace("domain1.com", "domain2.com");
    console.log(newUrl); 
    return false;
  };
</script>

但是我发现了contract_id个值,我知道同一列中应该有一些不同的值,我是否可以找出所有这些具有不同值结果的列,我发现重复select distinct contract_id, col1, col2,...colM from the_table; 尽管我使用了distinct,但因为字段很多而且只有几列具有不同的值。手动比较每一列很困难。

1 个答案:

答案 0 :(得分:0)

尝试一下

SELECT contract_id 
FROM the_table 
GROUP BY contract_id 
HAVING COUNT(contract_id)>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;

第一个将显示所有contract_id值,该值至少出现两次,第二个将显示您可能要操作(删除/更改)的所有行。

注意:我在SELECT NULL子句的ORDER BY中使用了OVER()。在此处使用适合的ORDER BY子句非常重要。这将负责哪个行获得数字1,哪些行获得递增的数字,并且由于>1而出现在结果中?