0

来自 Mysql文档

要使 UNION 结果中的行由每个 SELECT 一个接一个地检索到的行集组成,请在每个 SELECT 中选择一个附加列以用作排序列,并在最后一个 SELECT 之后添加一个 ORDER BY:

(SELECT 1 AS sort_col, col1a, col1b, ... FROM t1)
UNION
(SELECT 2, col2a, col2b, ... FROM t2) ORDER BY sort_col;

要另外维护单个 SELECT 结果中的排序顺序,请在 ORDER BY 子句中添加一个辅助列:

(SELECT 1 AS sort_col, col1a, col1b, ... FROM t1)
UNION
(SELECT 2, col2a, col2b, ... FROM t2) ORDER BY sort_col, col1a;

使用附加列还可以让您确定每行来自哪个 SELECT。额外的列也可以提供其他标识信息,例如表示表名的字符串。

我的问题:

为此,我是否需要在表中创建两个额外的列?

4

1 回答 1

1

sort_col,mysql 手册是动态创建的,具有常量值(1 和 2)。

类似地,您可以选择您希望的任何值,而无需任何表:

SELECT 1, 2, 3 FROM dual;

于 2013-11-11T06:58:28.690 回答