顾名思义,合并查询结果就是将多个查询的结果一块儿进行展示,但是需要注意的是,查询出来的列数和数据类型必须相同。
初识UNION
union
不使用关键字ALL
,执行的时候删除重复的记录,所有返回的行都是唯一的;
union
使用关键字ALL
,执行的时候不删除重复的记录,也不对接过进行自动排序。
基本语法如下:
select colume,...from table1 union [ALL] select colume,...from teble2;
运用union
PS:这里只是举例子,不纠结为什么要这样子用,以及有没有必要这样子查哈,只是为了表明这个方法的使用。
我们先看下现有ceshi1
表的数据;
mysql> select * from ceshi1;
+----+
| id |
+----+
| 1 |
| 2 |
| 10 |
| 20 |
| 30 |
+----+
5 rows in set (0.00 sec)
mysql>
然后我们来查下,大于10的数据;
mysql> select id from ceshi1 where id > 10;
+----+
| id |
+----+
| 20 |
| 30 |
+----+
2 rows in set (0.00 sec)
mysql>
我们再查下小于30的数据;
mysql> select id from ceshi1 where id < 30;
+----+
| id |
+----+
| 1 |
| 2 |
| 10 |
| 20 |
+----+
4 rows in set (0.00 sec)
mysql>
好,现在我们使用union
的方式将结果汇总到一块儿去,此时不使用关键字ALL
;
mysql> select id from ceshi1 where id > 10 union select id from ceshi1 where id < 30;
+----+
| id |
+----+
| 20 |
| 30 |
| 1 |
| 2 |
| 10 |
+----+
5 rows in set (0.00 sec)
mysql>
可以看到结果合二为一了,对吧,如果看的不明确,那么我们使用union
的方法,再加上关键字ALL
看看效果;
mysql> select id from ceshi1 where id > 10 union all select id from ceshi1 where id < 30;
+----+
| id |
+----+
| 20 |
| 30 |
| 1 |
| 2 |
| 10 |
| 20 |
+----+
6 rows in set (0.00 sec)
mysql>
可以看到union
使用关键字ALL
的时候,结果并没有合并,那么结果就出现了两个20
。
至此,本文结束。
往期推荐
发表评论