联合无序的多项选择?
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
.
我有多个选择由联合加入如下
(
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
.