MySQL的left join和not in 和not exists的差别
时间: 2023-05-31 18:02:40 浏览: 144
sql not in 与not exists使用中的细微差别
5星 · 资源好评率100%
MySQL的left join、not in和not exists都是用于连接两个或多个表的查询语句,但它们的实现方式和结果有所不同。
1. left join
left join是一种连接查询,它可以返回左表中的所有记录和右表中匹配的记录,如果右表中没有匹配的记录,则返回null。left join语法如下:
SELECT 列名 FROM 表1 LEFT JOIN 表2 ON 表1.关联字段=表2.关联字段
左连接查询的结果集中,左表的数据全部显示,右表中没有匹配的数据则为NULL。
2. not in
not in是一种子查询,它可以查找不在子查询中的数据。not in语法如下:
SELECT 列名 FROM 表名 WHERE 列名 NOT IN (SELECT 列名 FROM 表名)
not in查询的结果集中,只返回不在子查询中的数据。
3. not exists
not exists也是一种子查询,它可以查找不存在于子查询中的数据。not exists语法如下:
SELECT 列名 FROM 表名 WHERE NOT EXISTS (SELECT 列名 FROM 表名 WHERE 条件)
not exists查询的结果集中,只返回不存在于子查询中的数据。
总的来说,left join适用于需要返回左表中所有数据的情况,not in和not exists适用于查找不在子查询中的数据的情况。在具体使用时,需要根据实际情况选择合适的查询方式。
阅读全文