从子查询中选择时,我应该执行两次 ORDER BY 吗?



我有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