これを見てくれてありがとう。私より賢い人がこの答えを持っているでしょうが、私は限界に達しています。
3 つの個別のテーブルがあり、いくつかのレポートをテストする目的でそれらを相互に比較しようとしています。これらの各テーブルは、個別の検索クエリから入力される一時テーブルです。それらはすべて、それらをリンクする baseID を持っています。例
#1
ID value
1 5
2 6
#2
ID value
1 5
2 7
#3
ID value
1 5
2 7
次のクエリがあります
SELECT * FROM (SELECT * FROM #1 EXCEPT SELECT * FROM #2) AS T
UNION ALL SELECT * FROM (SELECT * FROM #2 EXCEPT SELECT * FROM #1) AS T
UNION ALL SELECT * FROM (SELECT * FROM #1 EXCEPT SELECT * FROM #3) AS T
UNION ALL SELECT * FROM (SELECT * FROM #3 EXCEPT SELECT * FROM #1) AS T
UNION ALL SELECT * FROM (SELECT * FROM #2 EXCEPT SELECT * FROM #3) AS T
UNION ALL SELECT * FROM (SELECT * FROM #3 EXCEPT SELECT * FROM #2) AS T
これは、3 つのテーブルを比較して、3 つのテーブル間で異なる値を返すのに非常にうまく機能します。欠落しているデータや異なるデータが 1 つだけであるなどですが、レポートに baseID が複数回表示される場合、これは失敗します。
#1
ID value
1 5
1 6
2 6
#2
ID value
1 5
1 6
2 7
#3
ID value
1 5
1 6
2 7
このセットでは、比較が両方を行っているため、#1 の膨大な量の結果が返されます。group または where 句でこれを元に戻すことができますが、方法がわかりません。何か案は?