5

设想

一个非常大的查询会返回来自多个连接表的大量字段。有些记录似乎是重复的。你完成一些检查,一些分组。您专注于几条记录以进行进一步调查。尽管如此,仍有太多字段无法检查每个值。

问题

是否有任何内置函数可以比较两条记录,如果记录匹配则返回 TRUE,否则返回 FALSE 和不匹配的字段集?

4

3 回答 3

7

CHECKSUM功能应有助于识别匹配的行

 SELECT CHECKSUM(*) FROM table
于 2012-07-17T09:59:40.480 回答
0

我建议使用该hashbytes函数来比较行。它比校验和更好。

如何按所有列创建 row_number 和分区,然后选择所有 rn 为 2 及以上的行?这不是慢的方法,它会给你完美的数据,并会给出被复制的整行数据。我会用这种方法而不是依赖所有的散列技术。

于 2012-07-17T11:06:51.460 回答
0

可能这就是您正在寻找的:

SELECT * FROM YourTable 
GROUP BY <<ColumnList>>
HAVING COUNT(*) > 1

只是根据 Podiluska 提供的建议来查找重复的记录

SELECT CHECKSUM(*) 
FROM YourTable 
GROUP BY CHECKSUM(*) 
HAVING COUNT(*) > 1 
于 2012-07-17T10:46:06.760 回答