假设有a(id)、b(id) 两个表,a left join b on a.id = b.id where b.id is not null 跟 a join b on a.id = b.id 有什么区别?
时间: 2024-06-01 16:08:54 浏览: 190
mysql使用from与join两表查询的区别总结
这两个查询语句的区别在于对于 a 表中没有匹配到 b 表中的记录时的处理方式不同。
- `a left join b on a.id = b.id where b.id is not null` 表示以 a 表为主表,左连接 b 表,只返回 a 表中与 b 表中存在匹配的记录,并且 b 表中 id 不为空。
- `a join b on a.id = b.id` 表示以 a 表为主表,内连接 b 表,只返回 a 表中与 b 表中存在匹配的记录。
所以,第一条语句返回的结果可能包含 a 表中有但是 b 表中没有的记录,而第二条语句不会返回这些记录。同时,第一条语句还会返回 b 表中 id 为空的记录,而第二条语句不会返回这些记录。
阅读全文