INNER JOIN 只返回两表匹配的记录,未匹配的行被丢弃;2. LEFT JOIN 保留左表所有行,右表无匹配时字段补 NULL;3. 查询有订单的用户用 INNER JOIN,查询所有用户(含无订单)用 LEFT JOIN;4. 统计每位用户订单总额需用 LEFT JOIN 以包含零订单用户;5. 核心选择依据是是否保留左表全部记录。

在MySQL中,INNER JOIN 和 LEFT JOIN 是两种最常用的连接方式,它们的核心%ignore_a_1%在于如何处理没有匹配记录的行。
INNER JOIN:只保留匹配的行
INNER JOIN 会返回两个表中都有匹配关系的记录。如果某条记录在左表或右表中找不到对应的匹配项,这条记录就不会出现在结果中。
举个例子:你有两个表,一个是用户表(users),一个是订单表(orders)。你想查出“有订单的用户”信息:
SELECT users.name, orders.amount FROM users INNER JOIN orders ON users.id = orders.user_id;
这个查询只会返回那些在 orders 表中有对应 user_id 的用户。如果某个用户没下过订单,他不会出现在结果里。
LEFT JOIN:保留左表所有行
LEFT JOIN 会返回左表中的所有记录,即使右表中没有匹配的行。对于右表中没有匹配的情况,相关字段显示为 NULL。
Shrink.media
Shrink.media是当今市场上最快、最直观、最智能的图像文件缩减工具
123 查看详情
还是上面的例子,如果你想查出“所有用户,包括没有订单的”,就应该用 LEFT JOIN:
SELECT users.name, orders.amount FROM users LEFT JOIN orders ON users.id = orders.user_id;
这时,即使某个用户没有订单,他依然会出现在结果中,只是 orders.amount 显示为 NULL。
关键区别总结
INNER JOIN:只返回两表匹配的数据,相当于取“交集”。 LEFT JOIN:返回左表全部数据,右表没有匹配的部分补 NULL,相当于“左表为主,带出右表信息”。 如果你需要统计每个用户的订单总额,包括零订单用户,必须用 LEFT JOIN,否则数据不完整。
基本上就这些。理解它们的关键是搞清“是否要保留左表的全部记录”。根据业务需求选择合适的 JOIN 类型,才能查出准确的结果。
以上就是mysql中INNER JOIN和LEFT JOIN区别_mysql JOIN类型解析的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1005256.html
微信扫一扫
支付宝扫一扫