首页 >数据库 >mysql教程 >如何在没有相应电话簿条目的情况下查找呼叫?

如何在没有相应电话簿条目的情况下查找呼叫?

Patricia Arquette
Patricia Arquette原创
2025-01-22 18:40:10730浏览

How to Find Calls Without Corresponding Phone Book Entries?

识别不匹配的通话记录

本指南演示了如何在“Call”表中查找“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>

此查询从“Call”表中选择所有列,其中在“Phone_book”表的 phone_number 列表中找不到 phone_number

方法二:使用NOT EXISTS

此方法利用带有 NOT EXISTS 的子查询来检查是否存在匹配的电话号码。

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

子查询搜索匹配项。 如果未找到匹配项 (NOT EXISTS),则外部查询将包含该记录。

方法三:利用LEFT OUTER JOIN

此方法使用 LEFT OUTER JOIN 组合两个表,然后过滤“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>

A LEFT OUTER JOIN 返回“Call”表中的所有行。 如果“Phone_book”中没有匹配项,“Phone_book”中相应的列将为NULLWHERE 子句过滤以仅显示这些不匹配的行。 这种方法通常因其性能优势而受到青睐,尤其是对于较大的数据集。

以上是如何在没有相应电话簿条目的情况下查找呼叫?的详细内容。更多信息请关注PHP中文网其他相关文章!

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