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

时间:2019-07-10 11:30:48

标签: postgresql

我有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?**/```

1 个答案:

答案 0 :(得分:1)

  

子查询的顺序将保留在父查询中

这可能会发生,但是您不能依靠它。

例如,如果优化器决定在派生表和other_table之间使用哈希联接,则将不保留派生表的顺序。

如果您想要保证的排序顺序,则也必须在外部查询中使用order by