ホームページ > データベース > mysql チュートリアル > Table1 と一致する名前を持つレコードを除外して Table2 からレコードを選択するにはどうすればよいですか?

Table1 と一致する名前を持つレコードを除外して Table2 からレコードを選択するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-19 16:46:15
オリジナル
589 人が閲覧しました

How to Select Records from Table2 Excluding Those with Matching Names in Table1?

あるテーブルからレコードを選択して別のテーブルからレコードを除外します

質問:

2 つのテーブルがあり、table1 に列 ID と名前が含まれ、table2 に列 ID と名前が含まれている場合、名前の値が table1 にない table2 内のすべての行を取得します。

推奨クエリ (間違っています):

<code class="language-sql">SELECT name
FROM table2
-- that are not in table1 already</code>
ログイン後にコピー

解決策:

望ましい結果を取得するためのより正確なクエリは次のとおりです:

<code class="language-sql">SELECT t2.name
FROM table2 t2
LEFT JOIN table1 t1 ON t1.name = t2.name
WHERE t1.name IS NULL;</code>
ログイン後にコピー

説明:

このクエリは、左結合を使用して、名前列に基づいて table2 の各行を table1 の対応する行と照合します。 table1 に一致する行が見つからない場合、結果内のその行の t1.name 値は NULL になります。 t1.name が NULL である行のみを選択することで、table1 の名前値と一致する table2 のレコードを効果的に除外します。 あるいは、NOT EXISTS 句を使用して同じ結果を得ることができます:

<code class="language-sql">SELECT name
FROM table2 t2
WHERE NOT EXISTS (
    SELECT 1
    FROM table1 t1
    WHERE t1.name = t2.name
);</code>
ログイン後にコピー

NOT EXISTS バージョンは、一般に、特に大規模なデータセットの場合、LEFT JOIN バージョンよりも効率的です。

以上がTable1 と一致する名前を持つレコードを除外して Table2 からレコードを選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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