Menu
CoddyTech

UNION 与 UNION ALL

本课属于 Coddy SQL 学习旅程的“进阶内容”单元。第 16 课,共 27 课。

你在 Fundamentals 中学过 UNION:它会将两个结果集堆叠在一起。默认情况下,它还会删除重复项,这会额外进行一次排序。

SELECT name FROM authors
UNION
SELECT name FROM editors

UNION ALL 会执行相同的堆叠操作,但会保留重复项。它的速度更快,而且当你确定两边不会生成相同的行,或者确实想统计每次出现时,几乎总是你想要的选择。

SELECT name FROM authors
UNION ALL
SELECT name FROM editors

两侧必须返回相同数量的列,列的顺序相同,且数据类型兼容。

challenge icon

挑战

简单

可用的表和列:

  • online_orders:order_no,amount
  • retail_orders:ticket_no,total

这两个表记录了来自不同渠道的订单,列名也不同。请返回一个包含所有订单的合并列表,列包括:

  • channel:'online' 或 'retail'
  • order_id:线上订单的 order_no,零售订单的 ticket_no
  • amount:订单总额(来自 amount 或 total)

保留所有行(不去重)。按 amount 降序排列。

亲手试试

-- 两个 SELECT 查询对应相同的 3 列,通过 UNION ALL 合并。
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

进阶内容中的所有课

自己练习: SQL 在线编辑器