我有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
换句话说,首先是尚未按开始排序的日期开始的事件,然后是按结束排序的正在进行的事件。
我似乎无法使用连接,因为这改变了顺序......
答案 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