2009-12-11 26 views

回答

1

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

4

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

跨联盟可以控制这样的顺序...

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

我的SQL是Oracle的语法。不知道这是否对其他RDBMS实施相同。 – dacracot 2009-12-11 22:19:14

+0

控制秩序的另一种方式是在第一部分中放入一个 “1作为等级”字段,然后在第二部分中放入“2作为等级”,然后“按等级排序” – 2009-12-11 22:22:02

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, ... 
相关问题