在UNION中订购结果集

时间:2012-12-14 19:43:50

标签: sql sql-server sql-server-2008

  

可能重复:
  Results order with union query

我正在使用SQL Server 2008。

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

1 个答案:

答案 0 :(得分: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

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

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