联合无序的多项选择?

Multiple Selects with Union disordered?

我有多个选择由联合加入如下

(
   select * from x
)
UNION
(
   select * from y
)
UNION
(
   select * from z
)

但是我在 SSMS 上得到的结果是混乱的:

z results
x results
y results

是否可以强制结果为 x、y、z?

必须提供一个ORDER BY子句,否则无法保证顺序。例如,来自不同表的行甚至可以穿插。

显式排序的一个不错的选择是添加一列并按它排序

select *, 1 as ordering
  from x
UNION
select *, 2
  from y
UNION
select *, 3
  from z
order by ordering;

我怀疑你实际上不需要 UNION 这里(这意味着 DISTNCT)而且你真的想要 UNION ALL.