2011-06-07 118 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

最後插入的記錄可以使用這個假設你有「身份證」作爲主鍵進行查詢。