Присоединиться к результату 2 упорядоченных запросов без потери порядка (в sql) - PullRequest
0 голосов
/ 11 апреля 2011

У меня есть 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

результат может быть:
01 января 2010 г. - 02 января 2010 г. -> из запроса 1
02 января 2010 г. - 01 февраля 2010 г. -> из запроса 1
01 ноября2009 - 10 февраля 2010 -> из запроса 2
01 окт 2009 - 11 февраля 2010 -> из запроса 2

Другими словами, сначала события, которые еще не начались в дату, но упорядоченные по началу изатем события в порядке упорядочения по концу.

Кажется, я не могу использовать соединение, поскольку это меняет порядок ...

1 Ответ

2 голосов
/ 11 апреля 2011

Вы можете добавить фиктивный порядок по столбцам и 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  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...