首页 >数据库 >mysql教程 >如何使用 SQL 查询识别未注册的调用者?

如何使用 SQL 查询识别未注册的调用者?

Patricia Arquette
Patricia Arquette原创
2025-01-22 18:39:11657浏览

How to Identify Unregistered Callers Using SQL Queries?

识别未知呼叫者:未注册号码的 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 查询解决方案:

下面介绍三种方法:

方法一: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 JOINNULL检查

此方法使用 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>

预期结果:

所有三个查询将产生相同的输出:

表:Call

id date phone_number
3 1045 333333333333

这可以正确识别来自未注册号码的呼叫。 选择最适合您的数据库系统和数据大小的方法。

以上是如何使用 SQL 查询识别未注册的调用者?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn