47.笔记 MySQL学习——使用UNION实现多表检索
来源:互联网 发布:js获取标准北京时间 编辑:程序博客网 时间:2024/06/07 21:18
47.笔记 MySQL学习——使用UNION实现多表检索
多个表查询的结果合并成一个结果集,可以使用UNION语句。
创建表如下:
mysql> create table tt1 ( i int,c varchar(10));
Query OK, 0 rows affected (0.01 sec)
mysql> create table tt2 ( j int,c varchar(10));
Query OK, 0 rows affected (0.02 sec)
mysql> create table tt3 ( d date,c int);
Query OK, 0 rows affected (0.01 sec)
插入如下:
mysql> insert into tt1 values( 1,'red' );
Query OK, 1 row affected (0.00 sec)
mysql> insert into tt1 values( 2,'blue' );
Query OK, 1 row affected (0.01 sec)
mysql> insert into tt1 values( 3,'green' );
Query OK, 1 row affected (0.00 sec)
如下:
mysql> insert into tt2 values ( -1,'tan');
Query OK, 1 row affected (0.00 sec)
mysql> insert into tt2 values ( 1,'red');
Query OK, 1 row affected (0.01 sec)
mysql> insert into tt3 values ( '1904-01-01',100);
Query OK, 1 row affected (0.01 sec)
mysql> insert into tt3 values ( '2004-01-01',100);
Query OK, 1 row affected (0.00 sec)
mysql> insert into tt3 values ( '2004-01-01',200);
Query OK, 1 row affected (0.00 sec)
UNION如下:
mysql> select i from tt1 union select j from tt2union select c from tt3;
+------+
| i |
+------+
| 1 |
| 2 |
| 3 |
| -1 |
| 100 |
| 200 |
+------+
6 rows in set (0.00 sec)
UNION有几种特性
列名和数据类型
UNION结果集里的列名来自第一个SELECT列名。后面的SELECT必须选取相同的个数的列,但是不必具有相同的名字和数据类型。
mysql> select i,c from tt1 union select c,d fromtt3;
+------+------------+
| i | c |
+------+------------+
| 1 | red |
| 2 | blue |
| 3 | green |
| 100 | 1904-01-01 |
| 100 | 2004-01-01 |
| 200 | 2004-01-01 |
+------+------------+
6 rows in set (0.00 sec)
重复行处理
默认会去掉重复行
mysql> select * from tt1 union select *from tt2 union select * from tt3;
+------------+-------+
| i | c |
+------------+-------+
| 1 | red |
| 2 | blue |
| 3 | green |
| -1 | tan |
| 1904-01-01 | 100 |
| 2004-01-01 | 100 |
| 2004-01-01 | 200 |
+------------+-------+
7 rows in set (0.00 sec)
ORDER BY 和 LIMIT处理
如果想讲UNION结果作为一个整体进行排序,需要用括号把每个SELECT语句括起来,并在最后加上一个ORDER BY。
如果限制返回数量,末尾加上LIMIT子句
mysql> (select * from tt1) union (select * fromtt2) union (select * from tt3) limit 2;
+------+------+
| i | c |
+------+------+
| 1 | red |
| 2 | blue |
+------+------+
2 rows in set (0.00 sec)
- 47.笔记 MySQL学习——使用UNION实现多表检索
- 39.笔记 MySQL学习——使用子查询实现多表检索
- Mysql学习笔记十——union查询
- 8.笔记 MySQL学习——检索信息
- 38.笔记 MySQL学习——使用连接实现多表连接
- 【mysql学习笔记】-检索数据基本用法
- MYSQL学习笔记(一)检索数据
- Mysql中使用UNION语句进行多表连接查询
- Mysql中使用UNION语句进行多表连接查询
- MySQL之——Union
- MySQL之——Union
- union-find算法——使用路径压缩的加权quick-union算法实现
- mysql union使用
- 信息检索导论学习笔记(3)——词典及容错式检索
- MySQL系列—全文检索(fulltext)使用
- mysql 多表删除 和UNION 、UNION all的用法
- 学习笔记——801 图像检索技术导论
- 学习笔记——801 图像检索技术导论
- snownlp情感分析源码解析
- 实验四
- 46.笔记 MySQL学习——将子查询改写为连接
- LINUX常用命令
- DBUTILS 获得刚插入自增id记录的id信息
- 47.笔记 MySQL学习——使用UNION实现多表检索
- PS
- UML简介
- 理解YOLOv2训练过程中输出参数含义
- 图的遍历程序模板–BFS
- 用程序 揭秘 用手机号尾号暴露你年龄的 骗局
- poj2676——Sudoku
- 策略设计模式
- 测试发布