将多个查询结果合并到一个表中,结果顺序是如何确定的?

时间:2009-12-11 22:10:52

标签: sql

我正在为不同的查询重新调整表格结果,但每个表格都采用相同的格式,并且都将在一个最终表格中。如果我希望查询1的结果首先列出,查询2秒等,那么最简单的方法是什么?

UNION是附加表还是随机组合?

3 个答案:

答案 0 :(得分:4)

除非在order by子句中明确调用,否则SQL标准不保证订单。在实践中,这通常按时间顺序返回,但如果订单很重要,我不会依赖它。

在工会中你可以像这样控制订单......

select
   this,
   that
from
   (
   select
      this,
      that
   from
       table1
   union
   select
     this,
     that
   from
     table2
   )
order by
   that,
   this;

答案 1 :(得分:1)

UNION将第二个查询附加到第一个查询,因此您首先拥有所有第一行。

答案 2 :(得分:1)

您可以使用:

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, ...