合并两个查询的结果。必须在使用union之前排序

时间:2016-06-01 00:39:23

标签: sql sql-server

我正在尝试合并以下查询:

SELECT TOP 1 [DATE] FROM [database 1].[DBO].[table1] order by DATE desc;

SELECT TOP 1 [DATE] FROM [database 2].[DBO].[table1] order by DATE desc;

显然,UNION ALL上的order by会与html,body{ padding:0; margin:0; } 条款发生冲突。 最终,我需要在选择第一个条目之前对每个表进行排序。一旦选择了条目,我想将所有后排序条目组合成一个结果。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

你可以这样做。您基本上希望排序中显示最高的表具有最低的tblNumber。请注意,排序实际上发生在union之后,但只要tblNumbers正确,它就会完全相同。

select *  --if you don't want tblNumber returned, select all columns except tblNumber
from 
(
    SELECT 1 as tblNumber
    , [DATE] 
    FROM [database 1].[DBO].[table1] 
) tbl1
union all
(
    SELECT 2 as tblNumber
    , [DATE] 
    FROM [database 2].[DBO].[table1]
) tbl2

order by tblNumber, [DATE] desc

答案 1 :(得分:0)

使用括号怎么样?好吧,实际上有一个子查询:

SELECT tt.*
FROM ((SELECT TOP 1 [DATE]
       FROM [database 1].[DBO].[table1]
       order by DATE desc
      ) UNION ALL
      (SELECT TOP 1 [DATE]
       FROM [database 2].[DBO].[table1]
       order by DATE desc
      )
     ) tt;

如果您愿意,可以向外部查询添加额外的order by