ホームページ > データベース > mysql チュートリアル > あるテーブルから、別のテーブルには存在しない異なる値を選択するにはどうすればよいですか?

あるテーブルから、別のテーブルには存在しない異なる値を選択するにはどうすればよいですか?

DDD
リリース: 2025-01-19 16:31:10
オリジナル
250 人が閲覧しました

How to Select Distinct Values from One Table That Don't Exist in Another?

別のテーブルに見つからない一意のレコードの抽出: 詳細ガイド

頻繁に行われるデータベース タスクには、あるテーブルから別のテーブルに存在しない一意のエントリを取得することが含まれます。 例で説明しましょう:

<code>table1 (id, name)
table2 (id, name)</code>
ログイン後にコピー

私たちの目標は、table2 に表示されないデータを table1 から選択することです。 素朴なアプローチは次のようになります:

<code>SELECT name
FROM table2
-- excluding those in table1</code>
ログイン後にコピー

これでは不十分です。一致しないレコードを正確に識別するには、より洗練された方法が必要です。

効果的な解決策: LEFT JOIN および IS NULL

次のクエリは、LEFT JOIN を利用して、table1 列に基づいて table2name の行をリンクします。 IS NULL 条件は、一致するペアをフィルターで除外します。

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

詳細な内訳:

クエリは次のように機能します:

  1. table1 からすべてのエントリを選択し、table2 内の対応するエントリと結合しようとします。
  2. WHERE 句は、table2.name 列が NULL である行を識別します。 NULL 値は、それぞれの table1 行が table2 内に一致しないことを示します。
  3. 最後に、結果から name 列のみが返され、選択されたすべての行の table1 に存在することが保証されます。

重要な注意事項:

このアプローチは、一般に効率的であり、ANSI 92 SQL をサポートする多数のデータベース システム間で互換性がありますが、常に最速であるとは限りません。 NOT IN 演算子の使用などの代替手段を使用すると、特定の状況でパフォーマンスが向上する可能性があります。

以上があるテーブルから、別のテーブルには存在しない異なる値を選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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