设为首页 加入收藏

TOP

[笔记][SQL] 连接join
2019-09-17 18:20:00 】 浏览:18
Tags:笔记 SQL 连接 join

在学习菜鸟教程里的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 |
+---------------+--------------+

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇PHP+jQuery实现双击修改table表格 下一篇进阶指南:如何从数据分析师转型..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目