首页 > 数据库 > mysql教程 > SQL 中的 LEFT JOIN 如何识别一个表中存在的数据而不是另一个表中的数据?

SQL 中的 LEFT JOIN 如何识别一个表中存在的数据而不是另一个表中的数据?

Barbara Streisand
发布: 2025-01-03 02:16:38
原创
516 人浏览过

How Can a LEFT JOIN in SQL Identify Data Existing in One Table But Not Another?

使用 LEFT JOIN 查找不存在的数据

在 SQL 中,可能需要比较两个表并识别一个表中存在的数据但不是另一个。在检查丢失的记录时,通常会遇到这种情况。

请考虑以下表格:

TABLE1

id name address
1 mm 123
2 nn 143

TABLE2

name age
mm 6
oo 9

目标是找到通过将 TABLE1 与 TABLE2 进行比较,找出 TABLE1 中不存在的名称。在这种情况下,TABLE1 中名为“nn”的第二行在 TABLE2 中不存在。

使用 INNER JOIN 的初始尝试:

SELECT w.*
FROM TABLE1 w
INNER JOIN TABLE2 v
ON w.name <> v.name
登录后复制

将无法检索所需的内容结果是因为 INNER JOIN 只返回两个表中都匹配的行。

解决方案在于使用 LEFT JOIN相反:

SELECT w.*
FROM TABLE1 w
LEFT JOIN TABLE2 v ON w.name = v.name
WHERE ISNULL(v.name);
登录后复制

LEFT JOIN 执行外连接,这意味着它将返回左表 (TABLE1) 中的所有行,无论右表 (TABLE2) 中是否有匹配的行。 ISNULL(v.name) 条件检查 TABLE1 中的行,其中 TABLE2 中相应的名称字段为空,表明该名称在 TABLE2 中不存在。

输出将为:

id name address
2 nn 143

此查询成功从 TABLE1 中检索名称不存在的“nn”行。

以上是SQL 中的 LEFT JOIN 如何识别一个表中存在的数据而不是另一个表中的数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

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