MySQL查询语句(六)——全连接与左连接查询
union合并多条语句的结果
语法:sql1 union sql2
mysql> select * from result;
+--------+--------+-------+
| name | subect | score |
+--------+--------+-------+
| 张三 | 数学 | 120 |
| 张三 | 语文 | 12 |
| 张三 | 地理 | 20 |
| 李四 | 数学 | 44 |
| 李四 | 语文 | 33 |
| 王五 | 数学 | 5 |
+--------+--------+-------+
6 rows in set (0.00 sec)
#取出小于30和大于100分的
mysql> select * from result where score<30 union select * from result where score>100;
+--------+--------+-------+
| name | subect | score |
+--------+--------+-------+
| 张三 | 语文 | 12 |
| 张三 | 地理 | 20 |
| 王五 | 数学 | 5 |
| 张三 | 数学 | 120 |
+--------+--------+-------+
4 rows in set (0.00 sec)
#mt表数据与result表的进行合并输出
mysql> select * from mt;
+--------+--------+---------+
| cat_id | name | high_cm |
+--------+--------+---------+
| 1 | 张三 | 173 |
| 2 | 张三 | 155 |
+--------+--------+---------+
2 rows in set (0.00 sec)
mysql> select * from result union select name,cat_id,high_cm from mt;
+--------+--------+-------+
| name | subect | score |
+--------+--------+-------+
| 张三 | 数学 | 120 |
| 张三 | 语文 | 12 |
| 张三 | 地理 | 20 |
| 李四 | 数学 | 44 |
| 李四 | 语文 | 33 |
| 王五 | 数学 | 5 |
| 张三 | 1 | 173 |
| 张三 | 2 | 155 |
+--------+--------+-------+
8 rows in set (0.00 sec)
union限制条件:查询结果集的列数量一致
mysql> select name,cat_id from mt union select * from result;
ERROR 1222 (21000): The used SELECT statements have a different number of columns
union内层不会排序,外层语句进行排序
加了limit时,对查询结果有影响时内层order by生效
mysql> (select name,cat_id,high_cm from mt order by high_cm) union (select * from result);
+--------+--------+---------+
| name | cat_id | high_cm |
+--------+--------+---------+
| 张三 | 1 | 173 |
| 张三 | 2 | 155 |
| 张三 | 数学 | 120 |
| 张三 | 语文 | 12 |
| 张三 | 地理 | 20 |
| 李四 | 数学 | 44 |
| 李四 | 语文 | 33 |
| 王五 | 数学 | 5 |
+--------+--------+---------+
8 rows in set (0.00 sec)
mysql> select name,cat_id,high_cm from mt union select * from result order by high_cm;
+--------+--------+---------+
| name | cat_id | high_cm |
+--------+--------+---------+
| 王五 | 数学 | 5 |
| 张三 | 语文 | 12 |
| 张三 | 地理 | 20 |
| 李四 | 语文 | 33 |
| 李四 | 数学 | 44 |
| 张三 | 数学 | 120 |
| 张三 | 2 | 155 |
| 张三 | 1 | 173 |
+--------+--------+---------+
8 rows in set (0.00 sec)
mysql> (select name,cat_id,high_cm from mt order by high_cm limit 1) union (select * from result);
+--------+--------+---------+
| name | cat_id | high_cm |
+--------+--------+---------+
| 张三 | 2 | 155 |
| 张三 | 数学 | 120 |
| 张三 | 语文 | 12 |
| 张三 | 地理 | 20 |
| 李四 | 数学 | 44 |
| 李四 | 语文 | 33 |
| 王五 | 数学 | 5 |
+--------+--------+---------+
7 rows in set (0.00 sec)
union默认去重复
union all 不去重复