2011-06-07 49 views
14
我使用Postgres的,不能设法让我的表的最后一条记录

获取表的最后一个记录的Postgres

my_query = client.query("SELECT timestamp,value,card from my_table"); 

我如何能做到这一点knowning该时间戳是记录的唯一标识符?

回答

44

如果你是指具有由

最后一个记录最新的时间戳值的记录

my_query = client.query(" 
SELECT timestamp,value,card from my_table 
order by timestamp desc limit 1"); 
+1

如果您没有描述插入时间的时间戳列,该怎么办? – WebWanderer 2015-12-03 16:36:28

+2

@WebWanderer'SELECT id,value,card FROM my_table ORDER BY id DESC LIMIT 1;' – devius 2016-02-22 18:43:28

11

可以使用

SELECT timestamp, value, card 
FROM my_table 
ORDER BY timestamp DESC 
LIMIT 1 

假设你还想排序timestamp

5

如果接受提示,请在此表中创建一个与串口类似的ID。此字段的默认值为:

nextval('table_name_field_seq'::regclass). 

因此,您使用查询来调用最后一个寄存器。用你的例子:

pg_query($connection, "SELECT currval('table_name_field_seq') AS id; 

我希望这个提示可以帮助你。

SELECT timestamp,value,card FROM my_table WHERE id=(select max(id) from my_table) 

假设插入将用于表的ID最高的整数值每一个新行:

+0

对不起,因为我的英语不好。 – phsaires 2015-06-30 13:52:39

+0

如果最后一行最终被删除,这仍然会返回它的ID ...不是一个安全的提示:) – ALTN 2017-10-27 17:42:44

3

最后插入的记录可以使用这个假设你有“身份证”作为主键进行查询。