我正在重新调整不同查询的表结果,但每个表都将采用相同的格式,并且都将位于一个最终表中。如果我想要查询1的结果首先被列出并且查询2第二等,那么最简单的方法是什么?将多个查询结果合并到一个表中,结果顺序如何确定?
是否UNION追加表或是随机组合?
我正在重新调整不同查询的表结果,但每个表都将采用相同的格式,并且都将位于一个最终表中。如果我想要查询1的结果首先被列出并且查询2第二等,那么最简单的方法是什么?将多个查询结果合并到一个表中,结果顺序如何确定?
是否UNION追加表或是随机组合?
UNION将第二个查询附加到第一个查询,因此您首先拥有所有第一行。
除非在order by子句中显式调用,否则SQL标准不保证顺序。在实践中,这通常会按时间顺序回溯,但如果顺序很重要,我不会依赖它。
跨联盟可以控制这样的顺序...
select
this,
that
from
(
select
this,
that
from
table1
union
select
this,
that
from
table2
)
order by
that,
this;
您可以使用:
SELECT Col1, Col2,...
FROM (
SELECT Col1, Col2,..., 1 AS intUnionOrder
FROM ...
) AS T1
UNION ALL (
SELECT Col1, Col2,..., 2 AS intUnionOrder
FROM ...
) AS T2
ORDER BY intUnionOrder, ...
我的SQL是Oracle的语法。不知道这是否对其他RDBMS实施相同。 – dacracot 2009-12-11 22:19:14
控制秩序的另一种方式是在第一部分中放入一个 “1作为等级”字段,然后在第二部分中放入“2作为等级”,然后“按等级排序” – 2009-12-11 22:22:02