我有SQL查询(下面的代码(,它从子查询中选择一些行。在子查询中,我执行 ORDER BY。
问题是:子查询的顺序是否会保留在父查询中?是否有一些规范/文档或其他东西可以证明这一点?
SELECT sub.id, sub.name, ot.field
FROM (SELECT t.id, t.name
FROM table t
WHERE t.something > 10
ORDER BY t.id
LIMIT 25
) sub
LEFT JOIN other_table ot ON ot.table_id = sub.id
/**order by id?**/```
它子查询的顺序是否会保留在父查询中
可能会发生,但你不能依赖它。
例如,如果优化程序决定在派生表和other_table
之间使用哈希联接,则不会保留派生表的顺序。
如果需要有保证的排序顺序,则还必须在外部查询中使用order by
。