ホームページ >データベース >mysql チュートリアル >対応する電話帳エントリがない通話を検索するにはどうすればよいですか?

対応する電話帳エントリがない通話を検索するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-22 18:40:10734ブラウズ

How to Find Calls Without Corresponding Phone Book Entries?

一致しない通話記録の特定

このガイドでは、「Phone_book」テーブルに対応するエントリが存在しない「Call」テーブルの通話レコードを検索する方法を説明します。 目的は、電話帳に記載されていない番号からの着信を識別することです。 これを実現するために、いくつかの SQL アプローチを検討します。

方法 1: NOT IN

を使用する

このメソッドは、NOT IN 句を使用して、「Phone_book」テーブルに存在する電話番号をフィルターで除外します。

<code class="language-sql">SELECT *
FROM Call
WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book);</code>

このクエリは、"Phone_book" テーブルの phone_number のリストに phone_number が見つからないすべての列を "Call" テーブルから選択します。

方法 2: NOT EXISTS

を使用する

このアプローチでは、NOT EXISTS を使用したサブクエリを利用して、一致する電話番号がないかどうかを確認します。

<code class="language-sql">SELECT *
FROM Call
WHERE NOT EXISTS
  (SELECT 1
   FROM Phone_book
   WHERE Phone_book.phone_number = Call.phone_number);</code>

サブクエリは一致するものを検索します。 一致するものが見つからない場合 (NOT EXISTS)、外側のクエリにはレコードが含まれます。

方法 3: LEFT OUTER JOIN

を活用する

このメソッドは、LEFT OUTER JOIN を使用して両方のテーブルを結合し、「Phone_book」テーブルの null 値をフィルターします。

<code class="language-sql">SELECT *
FROM Call
LEFT OUTER JOIN Phone_Book
  ON Call.phone_number = Phone_book.phone_number
WHERE Phone_book.phone_number IS NULL;</code>

A LEFT OUTER JOIN は、「Call」テーブルからすべての行を返します。 「Phone_book」に一致するものがない場合、「Phone_book」の対応する列は NULL になります。 WHERE 句は、これらの不一致の行のみを表示するようにフィルター処理します。 このアプローチは、特に大規模なデータセットの場合、パフォーマンス上の利点があるため、多くの場合好まれます。

以上が対応する電話帳エントリがない通話を検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。