从表中获取一些最后的行 - Postgresql

4

我有一个PostgreSQL表:

Username1 SomeBytes1

Username2 SomeBytes1

Username1 SomeBytes1

Username1 SomeBytes1

我需要获取表格末尾的某些行,这些行的用户名为Username1。例如,我需要最后两行的用户名为Username1。

select from my_table where user = Username1 LIMIT 2

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

2
请定义“first”和“last”。 - wildplasser
3个回答

8
首行和末行在表中是非常随意的。为了能够获得良好、可预测的结果,您应该总是使用order by子句。如果您这样做了,那么获取最后两行将会变得很容易。
例如,如果您有一个主键或类似于ID的东西(它由序列填充),那么您可以这样做:
select * from my_table where user = 'Username1' order by ID desc limit 2.

desc 告诉数据库按相反的顺序排序行,这意味着最后一个将成为第一个。


2

您的表是否有主键?您的表是否可以排序? 因为“第一个”和“最后一个”的概念意味着对元组进行某种排序。如果是这种情况,您可以将数据反向排序,使得“最后”的条目在顶部。然后,您可以使用您尝试过的语句访问它们。


0

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接