数据库查询经常需要从一个表中检索在另一个表中缺少相应条目的数据。让我们用一个例子来说明这一点:
场景:
我们有两个表,“table1”和“table2”,其结构如下:
<code>table1 (id, name) table2 (id, name)</code>
目标:
我们的目标是从“table2”中提取“table1”中不存在的“name”值。
一个天真的方法可能是:
<code>SELECT name FROM table2 -- where name is not in table1</code>
不幸的是,这个 SQL 查询不完整,不会产生预期的结果。
有效的解决方案:
正确的方法是使用LEFT JOIN
:
<code class="language-sql">SELECT t2.name FROM table2 t2 LEFT JOIN table1 t1 ON t1.name = t2.name WHERE t1.name IS NULL;</code>
说明:
LEFT JOIN
: 这可确保“table2”中的所有行都包含在结果集中,无论“table1”中的匹配行如何。WHERE
子句: 条件 WHERE t1.name IS NULL
过滤结果,仅保留“table2”中“table1”中没有对应“名称”的行。这种LEFT JOIN
技术广泛兼容各种数据库系统,提供了一种强大的方法来识别表之间丢失的记录。
以上是如何从一张表中选择另一张表中不存在的记录?的详细内容。更多信息请关注PHP中文网其他相关文章!