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`

返回的行的顺序是否与内部查询的顺序相同?

一般来说,这可以保证吗?


是的,如果你只使用

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;
链接地址: http://www.djcxy.com/p/94333.html

上一篇: MySQL select from subquery order

下一篇: Get records with max value for each group of grouped SQL results