什么是MySQL中的UNION语句?

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需要注意的点:

  1. 使用UNION的SELECT语句必须拥有相同数量的列。
  2. 列类型必须兼容,可以自动转换类型(比如INT和DOUBLE)。
  3. 列名可以不同,UNION会默认统一为第一个SELECT语句中的列名。
  4. 按第一条SELECT语句中列的顺序合并结果集。
  5. 重复行会自动去重,只会显示一次。
  6. 可以使用UNION ALL显示重复行。
  7. 可以连接多个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的好处:

  1. 只需要一个语句即可查询多个相关表或视图。
  2. 结果集自动去重。
  3. 可以控制合并结果集的顺序。
  4. 扩展性好,可以连接任意个SELECT语句。

UNION是MySQL中常用的组合查询语句,通过对多个简单查询结果的聚集,可以实现较复杂的查询效果。