2 つの異なるデータベースに 2 つのテーブルがあります。列の名前とすべてが一致します。クエリを実行して、両方のテーブルのデータが同一であることを確認するにはどうすればよいですか。各行を確認する必要があります。
1 に答える
1
データ セット全体に対して yes/no の回答が必要で、テーブルに少なくとも 1 つのキーがある場合は、すべての列を使用して内部結合を実行し、返される行数が各テーブルの行数と等しいことを確認します。 .
select
count(*)
from
a
inner join b
on
a.c1 = b.c1 and
a.c2 = b.c2 and
a.c3 = b.c3
正規化された結果として各テーブルとは異なる特定の行が必要な場合は、各テーブルから一意の (交差しない) 行を取得するために、複数 (少なくとも 2 つ) の選択が必要になります。もちろん、テーブルは同一のスキーマであるため、これらを適切に結合し、ソース テーブルの列を結果に射影して、各行がどのテーブルから発生したかを示すことができます。
結果の違いをキーで関連付ける必要があり (行の内容の変更、行の追加、行の削除など、編集前後の検索など)、DBMS が完全外部結合をサポートしている場合は、すべての列が等しいわけではない結果のみを返します。これは、削除時にキーが再利用されないことを前提としていることに注意してください。
SELECT *
FROM a
FULL OUTER JOIN b
ON a.PK = b.PK
WHERE
a.c1 <> b.c1 OR
a.c2 <> b.c2 OR
a.c3 <> b.c3
上記の例では、'SET ANSI NULLS OFF' を介して MS SQL で実行できるように、2 つの null 値が等しいと仮定していることにも注意してください。このように表現する方が速かっただけです。
于 2013-05-08T10:35:05.317 に答える