在 SQL 中,UNION 用于将两个或多个 SELECT 语句的结果集组合在一起,并删除重复的行。因此,在 UNION 中,我们不能直接使用 ORDER BY 子句。但是,我们可以使用子查询或临时表来实现在 UNION 中添加 ORDER BY 的功能。
以下是一个示例,展示如何将 ORDER BY 放在 SQL UNION 中,以便 TOTALS 始终显示为最后一行:
SELECT * FROM (
SELECT 'A' AS type, SUM(value) AS total
FROM table1
GROUP BY type
UNION
SELECT 'B' AS type, SUM(value) AS total
FROM table2
GROUP BY type
UNION
SELECT 'TOTALS' AS type, SUM(value) AS total
FROM (
SELECT 'A' AS type, value FROM table1
UNION
SELECT 'B' AS type, value FROM table2
) AS subquery
) AS result
ORDER BY
CASE
WHEN type = 'TOTALS' THEN 1
ELSE 0
END DESC,
type ASC;
在这个示例中,我们首先使用 UNION 将两个 SELECT 语句的结果集组合在一起。然后,我们使用子查询将这些结果集与 TOTALS 行组合在一起。最后,我们使用 ORDER BY 子句将 TOTALS 行放在最后一行,并按照其他行的排序规则进行排序。
需要注意的是,这个示例仅仅是一个示例,具体的实现方式可能会因为数据库类型和数据结构的不同而有所不同。
领取专属 10元无门槛券
手把手带您无忧上云