我有一个PostgreSQL表:
Username1 SomeBytes1
Username2 SomeBytes1
Username1 SomeBytes1
Username1 SomeBytes1
我需要获取表格末尾的某些行,这些行的用户名为Username1。例如,我需要最后两行的用户名为Username1。
select from my_table where user = Username1 LIMIT 2
给我前两行,但我需要最后两行。
如何选择它?
谢谢。
我有一个PostgreSQL表:
Username1 SomeBytes1
Username2 SomeBytes1
Username1 SomeBytes1
Username1 SomeBytes1
我需要获取表格末尾的某些行,这些行的用户名为Username1。例如,我需要最后两行的用户名为Username1。
select from my_table where user = Username1 LIMIT 2
首行和末行在表中是非常随意的。为了能够获得良好、可预测的结果,您应该总是使用order by 子句。如果您这样做了,那么获取最后两行将会变得很容易。 |
例如,如果您有一个主键或类似于ID的东西(它由序列填充),那么您可以这样做: |
select * from my_table where user = 'Username1' order by ID desc limit 2.
desc
告诉数据库按相反的顺序排序行,这意味着最后一个将成为第一个。
您的表是否有主键?您的表是否可以排序? 因为“第一个”和“最后一个”的概念意味着对元组进行某种排序。如果是这种情况,您可以将数据反向排序,使得“最后”的条目在顶部。然后,您可以使用您尝试过的语句访问它们。
要查看表的尾部,您可以使用ctid。它是PostgreSQL中记录的临时物理标识符。
SELECT * from my_table
WHERE user = Username1
ORDER BY ctid DESC
LIMIT 2