ホームページ >データベース >mysql チュートリアル >SQL クエリを使用して未登録の発信者を特定する方法
不明な発信者の識別: 未登録の番号に対する SQL テクニック
この記事では、SQL クエリを使用して、電話帳データベースにリストされていない番号からの電話を識別する方法を説明します。 これを達成するためのいくつかの効率的な方法を検討します。
シナリオ:
次のテーブルについて考えてみましょう:
テーブル: Phone_book
id | name | phone_number |
---|---|---|
1 | John | 111111111111 |
2 | Jane | 222222222222 |
テーブル: Call
id | date | phone_number |
---|---|---|
1 | 0945 | 111111111111 |
2 | 0950 | 222222222222 |
3 | 1045 | 333333333333 |
目的は、 にないPhone_book
番号からの通話を見つけることです。
SQL クエリ ソリューション:
以下に 3 つの方法を示します:
方法 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>
方法 2: NOT EXISTS
サブクエリ
この代替案では、NOT EXISTS
を使用して同じ結果を実現します。 大規模なデータセットの場合は、より効率的であると考えられることがよくあります:
<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
と NULL
チェック
このメソッドは 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>
期待される結果:
3 つのクエリはすべて同じ出力を生成します:
テーブル: Call
id | date | phone_number |
---|---|---|
3 | 1045 | 333333333333 |
これにより、未登録の番号からの通話が正しく識別されます。 データベース システムとデータ サイズに最適な方法を選択してください。
以上がSQL クエリを使用して未登録の発信者を特定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。