ホームページ >データベース >mysql チュートリアル >対応する電話帳エントリがない通話を検索するにはどうすればよいですか?
一致しない通話記録の特定
このガイドでは、「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 サイトの他の関連記事を参照してください。