在UNION中订购结果集

pyr*_*ram -1 sql sql-server sql-server-2008

可能重复:
带有联合查询的结果顺序

我正在使用SQL Server 2008.

我有2个选择加入使用UNION.第二个选择添加一行.我希望这一行始终显示在底部.我怎样才能做到这一点?

Lor*_*ter 5

您可以在union查询的每个部分中包含另一列,并使用它来排序: -

select col1, col2, col3 from
(
select col1, col2, col3, 1 as sortorder from table1
union
select col1, col2, col3, 2 as sortorder from table2
) as d
order by sortorder, col1
Run Code Online (Sandbox Code Playgroud)

这将把第二个select语句中的行放在第一个语句之后,其中它们将按照col1的顺序排列.

请注意,当您在内部查询之外进行排序时,使用union而不是union all的唯一原因是,如果要消除重复项.在这种情况下,重复项必须来自任一查询,而不是两者共有,因为sortorder列使它们在两个查询之间不同.所以你可能会想要使用union all.