Ответ 1
Это должно работать до тех пор, пока вы выполняете псевдоним подзапроса.
SELECT q.*
FROM (SELECT TOP 3 *
FROM table
ORDER BY id DESC) q
ORDER BY q.id ASC
Я хочу изменить порядок в sql-сервере результатов после использования desc. Например:
SELECT TOP 3 * FROM table ORDER BY id DESC
возвращает результаты:
505
504
503
Но тогда я хочу перевернуть результаты, чтобы они выглядели так:
503
504
505
Я пробовал
SELECT * FROM (SELECT TOP 3 * FROM table ORDER BY id DESC) ORDER BY id ASC
но это не сработало, никаких предложений?
Это должно работать до тех пор, пока вы выполняете псевдоним подзапроса.
SELECT q.*
FROM (SELECT TOP 3 *
FROM table
ORDER BY id DESC) q
ORDER BY q.id ASC
Я думаю, вы забыли псевдоним subselect
SELECT *
FROM (
SELECT TOP 3 *
FROM table
ORDER BY id DESC
) s
ORDER BY id ASC
SELECT * FROM (SELECT TOP 3 * FROM table ORDER BY id DESC) As AliasName ORDER BY id ASC
;WITH cte
AS
(
SELECT *, ROW_NUMBER() OVER(ORDER BY id DESC) rank
FROM table
)
SELECT *
FROM cte
WHERE rank <= 3
ORDER BY id ASC
SELECT * FROM (SELECT TOP 3 * FROM table ORDER BY id DESC) AS r ORDER BY r.id ASC
вычислил, что нужно сделать временную таблицу, используя имя AS
SELECT *
FROM (
SELECT *
FROM table
ORDER BY ID DESC
) TMP
ORDER BY TMP.ID ASC