加入2个有序查询的结果而不会丢失顺序(在sql中)

时间:2011-04-11 07:25:27

标签: sql join append

我有2个查询,我需要有一个查询输出查询1的结果并在其后附加查询2的结果:

查询1

SELECT *
FROM events
WHERE START >= '2010-1-1'
ORDER BY START 

查询2:

SELECT *
FROM events
WHERE START < '2010-1-1'
AND END > '2010-1-1'
ORDER BY END

结果可能是:
2010年1月1日至2010年1月2日 - &gt;来自查询1 2010年1月2日 - 2010年2月1日 - &gt;来自查询1 2009年11月1日 - 2010年10月10日 - &gt;来自查询2
2009年10月1日 - 2010年2月11日 - &gt;来自查询2

换句话说,首先是尚未按开始排序的日期开始的事件,然后是按结束排序的正在进行的事件。

我似乎无法使用连接,因为这改变了顺序......

1 个答案:

答案 0 :(得分:2)

您可以按列添加虚拟订单,并UNION两者的结果选择返回您喜欢的结果。

SELECT  *
        , 'Start' AS OrderBy1
        , Start AS OrderBy2
FROM    events
WHERE   START >= '2010-1-1'
UNION ALL
SELECT  *
        , 'End' AS OrderBy1
        , End AS OrderBy2
FROM    events
WHERE   START < '2010-1-1'
        AND END > '2010-1-1'
ORDER BY
        OrderBy1 DESC
        , OrderBy2