Postgresql从表中获取最后一些行

lpwwtiir  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(3)|浏览(338)

我有PostgreSQL表:

Username1 SomeBytes1

Username2 SomeBytes1

Username1 SomeBytes1

Username1 SomeBytes1

我需要从名为Username 1的表中获取一些行,但要从表的末尾获取。例如,我需要最后到行的Username 1

select from my_table where user = Username1 LIMIT 2

给我前两行,但我需要最后两行。
我如何选择它?

  • 谢谢-谢谢
but5z9lq

but5z9lq1#

表中的第一行和最后一行是非常随意的。为了得到一个好的可预测的结果,你应该总是有一个order by子句。如果你有这个子句,那么得到最后两行将变得很容易。
例如,如果您有一个主键或类似ID的东西(由序列填充),那么您可以执行以下操作:

select * from my_table where user = 'Username1' order by ID desc limit 2.

desc告诉数据库按逆序对行进行排序,这意味着最后一行将排在最前面。

i5desfxk

i5desfxk2#

您的数据表是否有主索引键?/您的数据表可以排序吗?因为'first'和'last'的概念暗示了Tuple的某种排序。如果是这种情况,您可以将数据排序成相反的方式,让您的'last'项目位于最上层。然后您可以使用您尝试的陈述式来存取它们。

zxlwwiss

zxlwwiss3#

要查看表尾,可以使用ctid。它是PostgreSQL中记录的临时物理标识符。

SELECT * from my_table
WHERE user = Username1
ORDER BY ctid DESC
LIMIT 2

相关问题