将选择始终以表格中的第一个(最旧的)记录开头

时间:2014-11-04 22:53:59

标签: postgresql

我做了一张像

的桌子
   record
----------+
1 | one   |
----------+
2 | two   |
----------+
3 | three |
----------+
4 | four  |
----------+
5 | five  |
----------+

没有ID列,这些只是我在DBVisualizer中每行旁边看到的行号。我按顺序1,2,3,4,5添加了行。这是"

SELECT
    *
FROM
    sch.test_table limit 1;

肯定会得到one,即以"最老的"开头。记录?或者是否会在大型数据集中发生变化?

1 个答案:

答案 0 :(得分:2)

不,根据SQL规范,订单在不使用order by时是不确定的。您正在处理一组数据,并且未订购集。此外,集合的大小也无关紧要。

Postgresql documentation说:

  

如果未给出ORDER BY,则按行的顺序返回行   系统发现生产速度最快。

这意味着行可能会以预期的顺序返回,或者它们可能没有 - 没有任何保证。

最重要的是,如果您想要确定性结果,则必须使用order by