ホームページ >データベース >mysql チュートリアル >電話帳データベースに登録されていない番号からの電話を見つけるにはどうすればよいですか?

電話帳データベースに登録されていない番号からの電話を見つけるにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-22 18:41:09801ブラウズ

How to Find Calls from Numbers Not Listed in a Phone Book Database?

MySQL でリストにない呼び出し元を特定する

この記事では、電話帳データベースにリストされていない番号からの電話を識別するための MySQL テクニックをいくつか紹介します。サンプルデータを使用して問題を分析し、効率的な解決策を提供します。

シナリオ:

Phone_bookCall の 2 つのテーブルがあります。

Phone_book テーブル:

<code>Phone_book
+----+------+--------------+
| id | name | phone_number |
+----+------+--------------+
| 1  | John | 111111111111 |
+----+------+--------------+
| 2  | Jane | 222222222222 |
+----+------+--------------+</code>

Call テーブル:

<code>Call
+----+------+--------------+
| id | date | phone_number |
+----+------+--------------+
| 1  | 0945 | 111111111111 |
+----+------+--------------+
| 2  | 0950 | 222222222222 |
+----+------+--------------+
| 3  | 1045 | 333333333333 |
+----+------+--------------+</code>

目標: テーブルにないPhone_bookからの電話番号からの通話を検索します。

解決策のアプローチ:

これを達成するための 3 つの効果的な方法を次に示します。

1. NOT IN 句:

このアプローチでは、Call テーブルに存在する電話番号を Phone_book テーブルから直接除外します。 Phone_book テーブルが小さい場合は効率的です。

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

2. NOT EXISTS サブクエリ:

これはサブクエリを使用して、Phone_book に電話番号が存在するかどうかを確認します。一般に、NOT IN テーブルが大きい場合は、Phone_book よりも効率的です。

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

3. LEFT OUTER JOIN:

この方法では、LEFT OUTER JOIN を使用して電話番号を比較します。 クエリはすべての呼び出しを返しますが、NULL 列に Phone_book 値を持つ呼び出しのみがリストされていない番号を表します。

<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>

最適なソリューションの選択:

最適なアプローチは、データベースのサイズと構造によって異なります。 大規模なデータセットの場合、パフォーマンスを向上させるために、通常は NOT EXISTS サブクエリまたは LEFT OUTER JOIN が推奨されます。 小規模なデータセットの場合は、NOT IN 句で十分な場合があります。 EXPLAIN を使用してクエリ実行プランを分析し、最も効率的な方法を選択することを検討してください。

以上が電話帳データベースに登録されていない番号からの電話を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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