[解決済み] sql query to return differences between two tables
2022-04-18 08:43:41
質問
SQL Serverで2つのテーブルを比較し、あるデータを検証しようとしています。私は、データがどちらか一方にある両方のテーブルからすべての行を返したいのです。要するに、私はすべての不一致を表示したいのです。そのためには、FirstName、LastName、Productの3つのデータをチェックする必要があります。
私はSQLの初心者ですが、私が見つけた多くの解決策は、物事を複雑にしすぎているように思えます。私はNULLを心配する必要はありません。
まずはこんなことを試してみました。
SELECT DISTINCT [First Name], [Last Name], [Product Name] FROM [Temp Test Data]
WHERE ([First Name] NOT IN (SELECT [First Name]
FROM [Real Data]))
しかし、これをさらに進めるのは難しいですね。
ありがとうございます。
EDIT
treaschf さんの回答を元に、以下のクエリのバリエーションで試しています。
SELECT td.[First Name], td.[Last Name], td.[Product Name]
FROM [Temp Test Data] td FULL OUTER JOIN [Data] AS d
ON td.[First Name] = d.[First Name] AND td.[Last Name] = d.[Last Name]
WHERE (d.[First Name] = NULL) AND (d.[Last Name] = NULL)
しかし、dにない行が少なくとも1つtdにあることが分かっているのに、0件の結果が返され続けています。
EDIT
OK、私はそれを理解したと思う。少なくとも、私の数分間のテストでは、十分に機能しているようです。
SELECT [First Name], [Last Name]
FROM [Temp Test Data] AS td
WHERE (NOT EXISTS
(SELECT [First Name], [Last Name]
FROM [Data] AS d
WHERE ([First Name] = td.[First Name]) OR ([Last Name] = td.[Last Name])))
これは基本的に、私のテストデータの中にある ではない を、実際のデータで使用することができます。しかし、私が必要としているのは、この点です。
どのように解決するのですか?
テーブルがある場合
A
と
B
であり、ともにコルム
C
に存在するレコードは次のとおりです。
A
には存在しないが
B
:
SELECT A.*
FROM A
LEFT JOIN B ON (A.C = B.C)
WHERE B.C IS NULL
1つのクエリですべての差分を取得するには、次のように完全結合を使用する必要があります。
SELECT A.*, B.*
FROM A
FULL JOIN B ON (A.C = B.C)
WHERE A.C IS NULL OR B.C IS NULL
この場合、知っておかなければならないのは、レコードが
A
には存在しないが
B
から来る列よりも
B
はNULLになり、同様に
B
であり
A
からの列は
A
はNULLになります。
関連
-
[解決済み] 3を挿入すると「ORA-01438: この列で許容される指定精度より大きい値」と表示される。
-
[解決済み】INTERSECTとINNER JOINは根本的に違うのか?[重複している]
-
[解決済み] pg_restoreです。[archiver] 入力ファイルはテキスト形式のダンプであるように見えます。psql を使用してください。
-
[解決済み] SQLで複数のGROUP BYを使用する場合とは?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQLクエリは、複数のテーブルからデータを返す
-
[解決済み] SQL Server - INSERT後の戻り値
-
[解決済み] 2つの日付の間の日付を選択するSQLクエリ
-
[解決済み】結合を使用したSQL更新クエリ
-
[解決済み] SQL Serverです。2つのテーブルに同時に挿入することは可能ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Excelに合体的な関数はありますか?
-
[解決済み] 3を挿入すると「ORA-01438: この列で許容される指定精度より大きい値」と表示される。
-
[解決済み】一括読み込みデータ変換エラー(指定されたコードページに対して型の不一致または無効な文字)1行目4列目(年)について)
-
[解決済み] テスト
-
[解決済み】SQL Serverは「集約関数やサブクエリを含む式に対して集約関数を実行できない」が、Sybaseはできる。
-
[解決済み] SQLクエリ「00904. 00000 - "%s: 無効な識別子".
-
[解決済み] エラー (ORA-00923: 期待された場所に FROM キーワードが見つかりませんでした)
-
[解決済み] SQLクエリで2つの列から値を引き算する
-
[解決済み] アクセスクエリーエラー(from句のシンタックスエラー)
-
[解決済み] nvarchar 値 ... をデータ型 int に変換する際に、変換に失敗しました。