[笔记][SQL] 连接join
程序员文章站
2022-03-18 15:39:52
在学习菜鸟教程里的MySQL教程时,对左右连接的结果有点不解。 其中有如下两个表: 执行右连接语句后: 得到的结果是: 我对这个结果感到很奇怪,右连接是会返回右表的所有行,不管有无匹配,但右表runoob_author明明有Google这个数据,为什么会是NULL。 试着把所有列打印出来: 可以看到 ......
在学习菜鸟教程里的mysql教程时,对左右连接的结果有点不解。
其中有如下两个表:
runoob_tbl: +-----------+--------------+---------------+-----------------+ | runoob_id | runoob_title | runoob_author | submission_date | +-----------+--------------+---------------+-----------------+ | 1 | 学习php | 菜鸟教程 | 2017-04-12 | | 2 | 学习mysql | 菜鸟教程 | 2017-04-12 | | 3 | 学习java | runoob.com | 2015-05-01 | | 4 | 学习python | runoob.com | 2016-03-06 | | 5 | 学习c | fk | 2017-03-06 | +-----------+--------------+---------------+-----------------+ tcount_tbl: +---------------+--------------+ | runoob_author | runoob_count | +---------------+--------------+ | 菜鸟教程 | 10 | | runoob.com | 20 | | google | 22 | +---------------+--------------+
执行右连接语句后:
select a.runoob_id, a.runoob_author, b.runoob_count from runoob_tbl a right join tcount_tbl b on a.runoob_author = b.runoob_author;
得到的结果是:
+-----------+---------------+--------------+ | runoob_id | runoob_author | runoob_count | +-----------+---------------+--------------+ | 1 | 菜鸟教程 | 10 | | 2 | 菜鸟教程 | 10 | | 3 | runoob.com | 20 | | 4 | runoob.com | 20 | | null | null | 22 | +-----------+---------------+--------------+
我对这个结果感到很奇怪,右连接是会返回右表的所有行,不管有无匹配,但右表runoob_author明明有google这个数据,为什么会是null。
试着把所有列打印出来:
+-----------+--------------+---------------+-----------------+---------------+--------------+ | runoob_id | runoob_title | runoob_author | submission_date | runoob_author | runoob_count | +-----------+--------------+---------------+-----------------+---------------+--------------+ | 1 | 学习php | 菜鸟教程 | 2017-04-12 | 菜鸟教程 | 10 | | 2 | 学习mysql | 菜鸟教程 | 2017-04-12 | 菜鸟教程 | 10 | | 3 | 学习java | runoob.com | 2015-05-01 | runoob.com | 20 | | 4 | 学习python | runoob.com | 2016-03-06 | runoob.com | 20 | | null | null | null | null | google | 22 | +-----------+--------------+---------------+-----------------+---------------+--------------+
可以看到google还是在的。这才明白原来select的是左表的runoob_author,所以打印出来才会是null。只要换成b.runoob_author就可以看到期望的结果了:
+---------------+--------------+ | runoob_author | runoob_count | +---------------+--------------+ | 菜鸟教程 | 10 | | runoob.com | 20 | | google | 22 | +---------------+--------------+
上一篇: 浅谈Git分支管理策略
下一篇: VUE环境安装和创建项目