我有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?**/```
答案 0 :(得分:1)
子查询的顺序将保留在父查询中
这可能会发生,但是您不能依靠它。
例如,如果优化器决定在派生表和other_table
之间使用哈希联接,则将不保留派生表的顺序。
如果您想要保证的排序顺序,则也必须在外部查询中使用order by
。