mysql查询之左连接查询与右连接查询
说明
左连接称之为左外连接,右连接称之为右外连接,这两个连接都是属于外连接。
左连接关键字:left join 表名 on 条件/ left outer 表名 join on 条件。
右连接关键字:right join 表名 on 条件/ right outer 表名 join on 条件。
左连接说明: left join 是 left outer join 的简写,左连接,左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录,右表记录不足的地方均为NULL。
右连接说明:right join 是 right outer join 的简写,右连接,右表的记录将会全部表示出来,而左表只会显示符合搜索条件的记录,左表记录不足的地方均为NULL。
使用
### websites.id 和 access_log.site_id关联
mysql> select * from websites;
+----+--------+
| id | name |
+----+--------+
| 1 | google |
| 2 | taobao |
| 3 | baidu |
+----+--------+
mysql> select * from access_log;
+----+---------+
| id | site_id |
+----+---------+
| 1 | 1 |
| 2 | 2 |
+----+---------+
### 列出所有网站名称和这些网站的访问信息,同时列出那些没有访问记录的网站名称
mysql> select w.name ,a.* from websites as w left join access_log as a on w.id = a.site_id;
+--------+------+---------+
| name | id | site_id |
+--------+------+---------+
| google | 1 | 1 |
| taobao | 2 | 2 |
| baidu | NULL | NULL |
+--------+------+---------+
3 rows in set
mysql> select w.name ,a.* from access_log as a right join websites as w on w.id = a.site_id;
+--------+------+---------+
| name | id | site_id |
+--------+------+---------+
| google | 1 | 1 |
| taobao | 2 | 2 |
| baidu | NULL | NULL |
+--------+------+---------+
3 rows in set