识别不匹配的通话记录
本指南演示了如何在“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”中相应的列将为NULL
。 WHERE
子句过滤以仅显示这些不匹配的行。 这种方法通常因其性能优势而受到青睐,尤其是对于较大的数据集。
以上是如何在没有相应电话簿条目的情况下查找呼叫?的详细内容。更多信息请关注PHP中文网其他相关文章!