Как сделать запрос, который не зависит от поля сортировки? - PullRequest
2 голосов
/ 17 июня 2011

У меня есть несколько таблиц, в каждой из которых добавлено одно и то же поле даты и времени.После объединения всех таблиц я хочу отсортировать их по самым последним.Но запрос скажет мне, что мне нужно добавить имя таблицы, например videos.date_time, а не ORDER BY date_time.Как я могу структурировать запрос так, чтобы он не зависел от того, какое поле date_time?

Ответы [ 3 ]

4 голосов
/ 17 июня 2011

Если вы не используете проприетарную функцию, такую ​​как директива SQL Server TOP, запрос Order By в объединении всегда находится внизу и всегда применяется ко всему запросу.Например,

Select Col1, date_time
From Table1
Union All
Select Col1, date_time
From Table2
Order By date_time

Если ваш запрос включает в себя различные элементы, такие как TOP или LIMIT, которые требуют Order By, и, следовательно, вы хотите дифференцировать Order By, то вы можете инкапсулировать свой запрос в производную таблицу:

Select Col, date_time
From    (
        Select Col1 As Col, date_time
        From Table1
        Union All
        Select Col1, date_time
        From Table2
        ) As Z
Order By Z.date_time
1 голос
/ 17 июня 2011

В SQL Server вы также можете заказать по номеру столбца, например, «ORDER BY 2», в этом случае, независимо от того, находится ли второй столбец в вашем наборе объединений, будет целью сортировки.

0 голосов
/ 17 июня 2011

Как я понимаю, у вас есть X таблиц (где X> 1), и у каждой таблицы есть свой собственный столбец date_time, и вы хотите получить последнее обновление. Если это правда, то один из возможных способов - сделать это так

SELECT id, date_added FROM table1 
UNION ALL
SELECT id, date_added FROM table2
ORDER BY date_added DESC;

Другие способы, которые я имею в виду, это когда вы выбираете результаты, помещаете их в массив и делаете «магию» внутри него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...