设想
一个非常大的查询会返回来自多个连接表的大量字段。有些记录似乎是重复的。你完成一些检查,一些分组。您专注于几条记录以进行进一步调查。尽管如此,仍有太多字段无法检查每个值。
问题
是否有任何内置函数可以比较两条记录,如果记录匹配则返回 TRUE,否则返回 FALSE 和不匹配的字段集?
设想
一个非常大的查询会返回来自多个连接表的大量字段。有些记录似乎是重复的。你完成一些检查,一些分组。您专注于几条记录以进行进一步调查。尽管如此,仍有太多字段无法检查每个值。
问题
是否有任何内置函数可以比较两条记录,如果记录匹配则返回 TRUE,否则返回 FALSE 和不匹配的字段集?
该CHECKSUM
功能应有助于识别匹配的行
SELECT CHECKSUM(*) FROM table
我建议使用该hashbytes
函数来比较行。它比校验和更好。
如何按所有列创建 row_number 和分区,然后选择所有 rn 为 2 及以上的行?这不是慢的方法,它会给你完美的数据,并会给出被复制的整行数据。我会用这种方法而不是依赖所有的散列技术。
可能这就是您正在寻找的:
SELECT * FROM YourTable
GROUP BY <<ColumnList>>
HAVING COUNT(*) > 1
只是根据 Podiluska 提供的建议来查找重复的记录
SELECT CHECKSUM(*)
FROM YourTable
GROUP BY CHECKSUM(*)
HAVING COUNT(*) > 1