您的位置:首页 > 数据库 > MySQL

MySQL查询语句(七)——union

2019-08-12 21:50 148 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/Sudley/article/details/99339967

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 不去重复

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: