MySQL中的UNION语句用于将多个SELECT语句的结果组合起来。
UNION语法:
sql
SELECT ... FROM ...
UNION
SELECT ... FROM ...;
例如:
sql
SELECT * FROM products WHERE category = 'phones'
UNION
SELECT * FROM products WHERE category = 'laptops';
这将查询category为phones的产品和category为laptops的产品,并将结果集合并。
UNION需要注意的点:
- 使用UNION的SELECT语句必须拥有相同数量的列。
- 列类型必须兼容,可以自动转换类型(比如INT和DOUBLE)。
- 列名可以不同,UNION会默认统一为第一个SELECT语句中的列名。
- 按第一条SELECT语句中列的顺序合并结果集。
- 重复行会自动去重,只会显示一次。
- 可以使用UNION ALL显示重复行。
- 可以连接多个SELECT语句,不仅限于两个。
例2:使用UNION ALL
sql
SELECT * FROM products WHERE category = 'phones'
UNION ALL
SELECT * FROM products WHERE category = 'laptops'
UNION ALL
SELECT * FROM products WHERE category = 'tablets';
UNION ALL 的效果是将三个类别的产品查询结果简单地合并,不去重。
使用UNION的好处:
- 只需要一个语句即可查询多个相关表或视图。
- 结果集自动去重。
- 可以控制合并结果集的顺序。
- 扩展性好,可以连接任意个SELECT语句。
UNION是MySQL中常用的组合查询语句,通过对多个简单查询结果的聚集,可以实现较复杂的查询效果。