【发布时间】:2011-10-31 06:43:29
【问题描述】:
我想从 Postgres 数据库中的表中获取最后 n 行。我不想使用ORDER BY 子句,因为我想要一个通用查询。有人有什么建议吗?
单个查询将不胜感激,因为我不想使用 Postgres 的 FETCH 光标。
【问题讨论】:
-
“不使用 order by”是逻辑上的废话。在没有
ORDER BY的查询中,顺序未定义并且没有“最后”行。您的意思可能是“不使用LIMIT”。 -
嗨 Erwin,如果我不想使用 order by,这意味着我想要最后添加的 n 行。 Lukas 给出的解决方案给了我这个结果。数据库还维护插入行的顺序(据说是自然顺序),我想要最后 n 行。
-
这是不可靠的。根据定义,RDBMS 中没有“自然顺序”。我要写的内容比评论要多,请看我的回答。
-
@mitalpritmani:欧文是对的。您不应该假设您将可靠地获得物理表中的最后 n 行。您可能至少要考虑按
oid甚至更好,按您自己的主键排序。那么,当然,整个问题已经过时了,你可以ORDER BY oid DESC LIMIT :n... -
附带说明,OID 列不再添加到用户表中(如果我是正确的,从 9.0 开始。)postgresql.org/docs/9.0/static/datatype-oid.html
标签: sql postgresql sql-order-by