查找未知号码的通话记录
我们的数据库包括两个表:“Phone_book”(包含姓名和电话号码)和“Call”(包含通话记录)。 目标是查明来自“Phone_book”表中未列出的号码的呼叫。
解决方案:
几个 SQL 查询可以完成此操作;效率取决于数据库优化和表大小。
方法1(不适用):
这个简单的查询对于较小的“Phone_book”表非常有效:
<code class="language-sql">SELECT * FROM Call WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book);</code>
方法 2(不存在):
另一种方法,通常首选用于较大数据集的性能:
<code class="language-sql">SELECT * FROM Call WHERE NOT EXISTS ( SELECT 1 FROM Phone_book WHERE Phone_book.phone_number = Call.phone_number );</code>
方法 3(左外连接):
使用 LEFT OUTER JOIN
的第三个选项:
<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>
重要提示:为了获得最佳性能,请将 SELECT *
替换为“Call”表中所需的特定列的列表。 这减少了数据检索并提高了查询速度。
以上是如何识别来自链接数据库中未列出的电话号码的呼叫?的详细内容。更多信息请关注PHP中文网其他相关文章!