シナリオ
非常に大きなサイズのクエリは、複数の結合されたテーブルから多くのフィールドを返します。一部のレコードが重複しているようです。あなたはいくつかのチェック、いくつかのグループ化を達成します。さらに調査するために、いくつかのレコードに焦点を合わせます。それでも、各値をチェックするにはフィールドが多すぎます。
質問
2つのレコードを比較し、レコードが一致する場合はTRUEを返し、一致しない場合はFALSEと一致しないフィールドのセットを返す組み込み関数はありますか?
シナリオ
非常に大きなサイズのクエリは、複数の結合されたテーブルから多くのフィールドを返します。一部のレコードが重複しているようです。あなたはいくつかのチェック、いくつかのグループ化を達成します。さらに調査するために、いくつかのレコードに焦点を合わせます。それでも、各値をチェックするにはフィールドが多すぎます。
質問
2つのレコードを比較し、レコードが一致する場合はTRUEを返し、一致しない場合はFALSEと一致しないフィールドのセットを返す組み込み関数はありますか?
このCHECKSUM
関数は、一致する行を識別するのに役立つはずです
SELECT CHECKSUM(*) FROM table
これがあなたが探しているものかもしれません:
SELECT * FROM YourTable
GROUP BY <<ColumnList>>
HAVING COUNT(*) > 1
重複しているレコードを見つけるためにPodiluskaによって提供された提案に基づいて開発するだけです
SELECT CHECKSUM(*)
FROM YourTable
GROUP BY CHECKSUM(*)
HAVING COUNT(*) > 1
この関数を使用して行を比較することをお勧めしますhashbytes
。チェックサムよりも優れています。
すべての列でrow_numberとparttionを作成してから、rnが2以上のすべての行を選択するのはどうですか?これは遅い方法ではなく、完全なデータを提供し、複製されている行全体のデータを提供します。すべてのハッシュ手法に依存するのではなく、この方法を使用します。