MySQL UNION

用 UNION 纵向拼接多条查询结果,理解去重与列对齐。

Beginner
Key PointsUNION 会自动去重、UNION ALL 保留重复;两边列数必须一致。

UNION 与 UNION ALL

SQL
SELECT username FROM users WHERE age < 30
UNION
SELECT username FROM users WHERE age > 25;

-- 不去重、更快:
SELECT username FROM users WHERE age < 30
UNION ALL
SELECT username FROM users WHERE age > 25;
Output
+----------+
| username |
+----------+
| alice    |
| carol    |
+----------+

规则与注意

  • 两边 SELECT 的列数、顺序必须一致
  • 列名以第一条 SELECT 为准
  • UNION 去重(隐式 DISTINCT),UNION ALL 不去重且更快
  • ORDER BY / LIMIT 要放在最后一条
In most cases UNION ALL is enough — the implicit DISTINCT in UNION adds a dedupe+sort cost you rarely need.

Friends & Partners