ホームページ > データベース > mysql チュートリアル > SQL の LEFT JOIN は、あるテーブルには存在するが別のテーブルには存在しないデータをどのように識別できるのでしょうか?

SQL の LEFT JOIN は、あるテーブルには存在するが別のテーブルには存在しないデータをどのように識別できるのでしょうか?

Barbara Streisand
リリース: 2025-01-03 02:16:38
オリジナル
516 人が閲覧しました

How Can a LEFT JOIN in SQL Identify Data Existing in One Table But Not Another?

LEFT JOIN を使用した存在しないデータの検索

SQL では、2 つのテーブルを比較し、1 つのテーブルに存在するデータを識別する必要が生じることがあります。しかし、もう一方はそうではありません。このシナリオは、欠落レコードをチェックするときによく発生します。

次のテーブルについて考えてみましょう:

TABLE1

id name address
1 mm 123
2 nn 143

TABLE2

name age
mm 6
oo 9

目的は、 TABLE1 と TABLE2 を比較して、TABLE1 に存在しない名前を検出します。この場合、TABLE1 の "nn" という名前の 2 行目は TABLE2 には存在しません。

INNER JOIN を使用した最初の試行:

SELECT w.*
FROM TABLE1 w
INNER JOIN TABLE2 v
ON w.name <> v.name
ログイン後にコピー

は、目的の行を取得できません。 INNER JOIN は両方のテーブルに一致する行のみを返すため、結果が生じます。

解決策は LEFT JOIN を使用することです。代わりに:

SELECT w.*
FROM TABLE1 w
LEFT JOIN TABLE2 v ON w.name = v.name
WHERE ISNULL(v.name);
ログイン後にコピー

LEFT JOIN は外部結合を実行します。つまり、右側のテーブル (TABLE2) に一致する行があるかどうかに関係なく、左側のテーブル (TABLE1) からすべての行が返されます。 ISNULL(v.name) 条件は、TABLE2 の対応する名前フィールドが null である TABLE1 内の行をチェックします。これは、名前が TABLE2 に存在しないことを示します。

出力は次のようになります。

id name address
2 nn 143

このクエリは、存在しない名前「nn」を持つ行を TABLE1 から正常に取得します。

以上がSQL の LEFT JOIN は、あるテーブルには存在するが別のテーブルには存在しないデータをどのように識別できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート