4

我有PostgreSQL表:

Username1 SomeBytes1

Username2 SomeBytes1

Username1 SomeBytes1

Username1 SomeBytes1

我需要从名称为 Username1 但从表的末尾获取一些行。例如,我需要最后一行 Username1

select from my_table where user = Username1 LIMIT 2

给我前两行,但我需要最后两行。

我该如何选择它?

谢谢你。

4

2 回答 2

8

表中的第一个和最后一个是非常随意的。为了获得良好的可预测结果,您应该始终有一个order by子句。如果你有这个,那么获得最后两行将变得容易。

例如,如果您有一个主键或类似 ID 的东西(由序列填充),那么您可以执行以下操作:

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

desc告诉数据库以相反的顺序对行进行排序,这意味着最后一个将是第一个。

于 2012-05-29T08:54:35.810 回答
2

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

于 2012-05-29T08:59:28.403 回答