MySQL выбирает из подзапроса

Если у меня есть следующая таблица:

CREATE TABLE `docs` ( 
    `id` int(6) unsigned NOT NULL, 
    `rev` int(3) unsigned NOT NULL, 
    `content` varchar(200) NOT NULL, 
--
    PRIMARY KEY (`id`) 
) 

и выполните следующий запрос:

select * 
from ( 
    select * 
    from docs 
    order by rev desc 
) as `rows`

будет ли порядок возвращенных строк таким же, как и порядок внутреннего запроса?

Можно ли это гарантировать, вообще говоря?

Ответ 1

yes, Если вы используете только

select * 
from ( 
    select * 
    from docs 
    order by rev desc 
) as `rows`

тогда он будет таким же, как и всегда. Но использование ORDER BY в подзапросе не должно быть сделано. Подзапрос, используемый в каком-то внешнем запросе, и что внешний запрос должен будет делать упорядочение в любом случае, поэтому нет точки, упорядочивающей подзапрос

, если вы используете TOP или LIMIT в подзапросе, вам нужно будет использовать ORDER в подзапросе. Но это не стандартный SQL

Вы должны использовать его таким образом

SELECT * 
FROM ( 
    SELECT * 
    FROM docs 
) AS `rows` ORDER BY rev DESC;