UNION 的含义是联合,并集,结合,在MySQL中可以将多个查询语句的结果合并成一个结果集,在MySQL 不支持FULL OUTER JOIN 的情况下,弥补了并集 查询的短板。 联合查询: 关键字union,作用就是将多
UNION 的含义是“联合,并集,结合”,在MySQL中可以将多个查询语句的结果合并成一个结果集,在MySQL 不支持FULL OUTER JOIN 的情况下,弥补了“并集” 查询的短板。 联合查询:关键字union,作用就是将多条查询语句的结果合并成一个结果集。 案例:(查询部门编号大于100或名字中含有a字符的员工信息)
用联合查询演示:
union是应用场景:比如在我们有个数据库中的老师表和学生表,两者之间没有直接的关联关系,但是又有一些共通性,但是现在我们想要查询学校所有男老师和男学生的信息(学生和老师的编号,姓名,出现日期,性别),这个时候就是应用union的时候。
联合查询的特点:
联合查询的规则联合查询是有一定使用规则的,如果不加注意,MySQL就有可能执行报错,或意义混乱
规则一:查询列数必须保持一致其实很好理解,如果要将两个结果集合并,那么就需要将列数统一,MySQL对此作了严格的限制,不会以 NULL 值显示没有查询该列的查询记录,这是为了保证数据的准确性,原因是 NULL 也是一种值。
规则二:列值类型和顺序最好保持一致“最好” 的意思是 “我们可以不这样做,但皮一下并没有什么意义”。 比如,我们将stu_name 与 class_id 调换顺序:
MySQL虽然不会报错,但结果已经不具有什么使用意义了。另外,列的别名其实并不需要完全统一,多条查询语句中如果出现不统一的列名,MySQL会默认使用第一条查询语句的列名。如:
但为了保证可读性,建议为每条查询语句指定相同的列名,保持统一格式。 规则三:UNION 默认去重UNION 关键字不会查询重复的记录,但重复的记录并不是简简单单的“看上去重复”或“主键重复”,记录中只要有一个字段不一致,UNION 就会老老实实的将他们都查询出来。 UNION 与 UNION ALLUNION 关键字是去重的联合查询,如果非要将所有记录都查询出来,不忽略重复的记录,那么可以使用 UNION ALL ,对比来看一下:
UNION 的结果:
UNION ALL 的结果: |
2021-06-02
2021-06-05
2022-06-27
2024-02-19
2022-10-12