我有一个表,该表具有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,但因为字段很多而且只有几列具有不同的值。手动比较每一列很困难。
答案 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
而出现在结果中?