sql左连接_技术专题——MySQL的左连接(知识点分享)

6cb704052c82ad0f658b8d3570577d55.png

大家好~今天Amy要给大家分享一些关于MySQL左连接的知识点,以Amy多年的经验来看可以说是非常实用了,可以帮助大家有效的避免一些误区。对分布式事务数据库感兴趣的也可以翻一翻之前的文章【【知识点】分布式事务数据库 —-MySQL 数据库开发规范系列文章】。闲言少叙,我们直接上干货!

MySQL左连接

【现象】

Ecbil项目中使用左联接的SQL语句,几乎全部存在如图1-1所示的不当写法:

78838153c9ce199edbd833a8bc039d17.png
图1-1

为便于更多的技友快速读懂、理解,只讨论2张表对象进行连接操作的情况,大于2张表对象进行的连接操作原理也是一样的。

【语法】

SELECT M.columnname……,N.* columnname……

FROM left_table M LEFT JOIN right_table N ON M. columnname_join=N. columnname_join AND N. columnname=XXX

WHERE M.columnname=XXX……

【特性】

ON字句连接条件,用于把2表中等值的记录连接在一起,但是不影响记录集的数量。若是left_table中的某记录,无法在表right_table找到对应的记录,则此记录依然显示在记录集钟,只表 right_table需要在查询显示的列的值用NULL替代;

ON字句连接条件中表right_table. columnname=XXX用于控制right_table表是否有符合要求的列值还是用NULL替换的方式显示在查询列中,不影响记录集的数量;

WHERE字句控制记录是否符合查询要求,不符合则过滤掉;

【总结】

ON字句控制right_table的列值符合显示,还是不符合就用NULL替换,不影响最终符合查询要求的记录集;WHERE字句是控制那些记录是显示在最终的记录集中。

【常见错误用法的左连接】

错把限制表right_table的条件,从ON 子句中放到WHERE字句中的SQL及数据(编号:SQL_8)

root@localhost : eugene 03:49:57> SELECT M.ID,M.username,N.CollectNum,N.BuyNum

-> FROM left_table M LEFT JOIN right_table N ON M.ID=N.UID

-> WHERE M.ID<=6 AND N.SearchNum>300;

±—±----------------±-----------±-------+

| ID | username | CollectNum | BuyNum |

±—±----------------±-----------±-------+

| 1 | 06440350@qq.com | 817 | 39 |

±—±----------------±-----------±-------+

错把限制表left_table或称影响最终记录集的条件,从WHERE子句中放到ON字句中的SQL及数据(编号:SQL_9)

root@localhost : eugene 03:54:14> SELECT M.ID,M.username,N.CollectNum,N.BuyNum

-> FROM left_table M LEFT JOIN right_table N ON M.ID=N.UID AND M.ID<=6 AND N.SearchNum>300;

±—±----------------±-----------±-------+

| ID | username | CollectNum | BuyNum |

±—±----------------±-----------±-------+

| 6 | 02026078@qq.com | NULL | NULL |

| 7 | 03990516@qq.com | NULL | NULL |

| 9 | 05301926@qq.com | NULL | NULL |

| 1 | 06440350@qq.com | 817 | 39 |

| 4 | 16752438@qq.com | NULL | NULL |

| 2 | 25173782@qq.com | NULL | NULL |

| 10 | 56599949@qq.com | NULL | NULL |

| 3 | 66328120@qq.com | NULL | NULL |

| 5 | 92117196@qq.com | NULL | NULL |

| 8 | 93677961@qq.com | NULL | NULL |

±—±----------------±-----------±-------+

以上就是Amy为大家带来的知识分享,有什么不足指出欢迎大家指出,感兴趣的可以继续关注一下我哦~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值