首页 > 数据库 > mysql教程 > 如何查找电话簿数据库中未列出的号码的呼叫?

如何查找电话簿数据库中未列出的号码的呼叫?

DDD
发布: 2025-01-22 18:41:09
原创
744 人浏览过

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

识别 MySQL 中未列出的调用者

本文演示了几种 MySQL 技术,用于识别电话簿数据库中未列出的号码的电话。我们将使用样本数据分析问题并提供有效的解决方案。

场景:

我们有两个表:Phone_bookCall

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

解决方法:

以下是实现此目的的三种有效方法:

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板