mysql 连接查询

在前面,我们学习了如何在一张表中读取数据,这是相对简单的,但是在真正的应用中我们经常需要从多个数据表中读取数据。

本文我们将学习如何使用 MySQL 的 JOIN 在两个或多个表中查询数据。

JOIN


INNER JOIN(内连接):获取两个表中字段匹配关系的记录。

LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。

RIGHT JOIN(右连接): 获取右表所有记录,即使左表没有对应匹配的记录。

mysql> use users;
Database changed

mysql> select * from user_info;
+------+---------+--------+
| id   | user_id | name   |
+------+---------+--------+
| 1000 | U1000   | 聂离   |
| 1001 | U1001   | 杜泽   |
| 1002 | U1002   | 陆飘   |
+------+---------+--------+
3 row in set (0.00 sec)

mysql> select * from user_tag;
+------+---------+----------+
| id   | user_id | tag_id   |
+------+---------+----------+
| 1000 | U1000   | TAG20000 |
| 1001 | U1002   | TAG20001 |
| 1002 | U1003   | TAG20005 |
| 1003 | U2000   | TAG20009 |
+------+---------+----------+
4 rows in set (0.00 sec)

 

 1. INNER JOIN

mysql> select a.user_id,a.name,b.tag_id from user_info a inner join user_tag b on a.user_id=b.user_id;
+---------+-------+----------+
| user_id | name  | tag_id   |
+---------+-------+----------+
| U1000   | 聂离  | TAG20000 |
| U1002   | 陆飘  | TAG20001 |
+---------+-------+----------+
2 rows in set (0.00 sec)

 

 

2. LEFT JOIN

mysql> select a.user_id,a.name,b.tag_id from user_info a left join user_tag b on a.user_id=b.user_id;
+---------+-------+----------+
| user_id | name  | tag_id   |
+---------+-------+----------+
| U1000   | 聂离  | TAG20000 |
| U1001   | 杜泽  | NULL     |
| U1002   | 陆飘  | TAG20001 |
+---------+-------+----------+
3 rows in set (0.00 sec)

 

 

3. RIGHT JOIN

mysql> select a.user_id,a.name,b.tag_id from user_info a right join user_tag b on a.user_id=b.user_id;
+---------+-------+----------+
| user_id | name  | tag_id   |
+---------+-------+----------+
| U1000   | 聂离  | TAG20000 |
| U1002   | 陆飘  | TAG20001 |
| NULL    | NULL  | TAG20005 |
| NULL    | NULL  | TAG20009 |
+---------+-------+----------+
4 rows in set (0.00 sec)

 

联合查询


MySQL UNION 操作符用于连接两个或两个以上的 SELECT 语句的结果组合到一个结果集合中。会删除重复的数据。

UNION ALL 返回所有结果集,包含重复数据。

SELECT expression1, expression2, ... expression_n FROM table_1 [WHERE conditions]
UNION [ALL]
SELECT expression1, expression2, ... expression_n FROM table_2 [WHERE conditions];

 

posted @ 2018-10-25 11:15  PIPO2  阅读(199)  评论(0编辑  收藏  举报