技术交流QQ群:1027579432,欢迎你的加入!
联合查询
- 联合查询:union,将多次查询(多条select语句)的结果,在字段数相同的情况下,在记录的层次上进行拼接。
- 联合查询由多条select语句构成,每条select语句获取的字段数相同,但与字段类型无关。
- 基本语法:select 语句1 + union + [union选项] + select 语句2 + ...;
- union选项:
- all:无论重复与否,保留所有记录;
- distinct:表示去重,为默认选项。
- union选项:
- 联合查询,默认去重
mysql> SELECT * FROM class -> UNION DISTINCT -> SELECT * FROM class; +----+-------+------+ | id | grade | room | +----+-------+------+ | 1 | 3.1 | A | | 2 | 3.2 | B | | 3 | 3.4 | C | +----+-------+------+ 3 rows in set (0.00 sec)
- 联合查询,保留所有记录
mysql> SELECT * FROM class -> UNION ALL -> SELECT * FROM class; +----+-------+------+ | id | grade | room | +----+-------+------+ | 1 | 3.1 | A | | 2 | 3.2 | B | | 3 | 3.4 | C | | 1 | 3.1 | A | | 2 | 3.2 | B | | 3 | 3.4 | C | +----+-------+------+ 6 rows in set (0.00 sec)
- 联合查询只要求字段数相同,而跟类型无关。联合查询只保留了第一张表的字段,而不保留第二张表的字段。
mysql> SELECT id, grade, room FROM class -> UNION DISTINCT -> SELECT name, age, id FROM student; +--------+--------------------+------+ | id | grade | room | +--------+--------------------+------+ | 1 | 3.0999999046325684 | A | | 2 | 3.200000047683716 | B | | 3 | 3.4000000953674316 | C | | curry | 30 | 1 | | durant | 29 | 2 | | Riuo | 27 | 3 | | harden | 29 | 4 | +--------+--------------------+------+ 7 rows in set (0.04 sec)