0

2 つのテーブルがあり、それらに同じデータがあるかどうかを確認したい場合、最も簡単な方法は何MySQLですか?
相関サブクエリの実行について読んだことがありUNION ALLますが、このクエリは約 2 ページ (!) であり、実行内容を実際に追うことができません。もっと簡単な方法があるはずです。
たとえばMySQL、テーブルデータをファイルにコピーして実行する場合でもvimdiff(これが可能かどうかはわかりません-そうですか-大声で考えているだけです)。

UPDATE
構造ではなく、テーブル データのみに関心があります。これは、私が行ったあいまいなコメントのために明確にするためのものです

4

5 に答える 5

1

これを放り出すだけで、完全な外部結合をエミュレートし、右側または左側だけが null である行を返すことができます。

select t1.* 
from table1 t1
LEFT OUTER JOIN table2 t2
ON t1.col1 = t2.col1
AND t1.col2 = t2.col2
AND ...
WHERE t2.id is null
UNION
select t2.* 
from table2 t2
LEFT OUTER JOIN table1 t1
ON t2.col1 = t1.col1
AND t2.col2 = t1.col2
AND ...
WHERE t1.id is null

FULL OUTER JOIN を使用すると、他のテーブルで他の行が使用できないすべての行を表示できます。

于 2013-07-01T19:16:50.820 に答える
0

次のクエリを使用します。

SELECT c1 = cjoin AND c2 = cjoin equiv
FROM (SELECT COUNT(*) c1 FROM Table1) t1,
     (SELECT COUNT(*) c2 FROM Table2) t2,
     (SELECT COUNT(*) cjoin
      FROM Table1 t1
      JOIN Table2 t2
      ON t1.col1 = t2.col1 AND t1.col2 = t2.col2 AND t1.col3 = t2.col3 ...) tjoin

テーブルに一意のキーがあると仮定すると、equiv = 1テーブルが等しい場合に返されます。違いは表示されません。これは単なるバイナリ テストです。

于 2013-07-01T19:22:10.887 に答える