2011-06-18 151 views
1

我有一個SQLite問題,基本歸結爲以下問題。SQLite - 選擇具有特定字段值的最新行

id | key | data 
1 | A | x 
2 | A | x 
3 | B | x 
4 | B | x 
5 | A | x 
6 | A | x 

將新數據附加到表的末尾並添加一個自動遞增的ID。

現在,我想創建一個查詢返回的最新行鍼對每一個琴鍵,就像這樣:

id | key | data 
4 | B | x 
6 | A | x 

我已經嘗試了一些不同的查詢,但我一直不成功。如何僅選擇表中每個「鍵」值的最新行?

回答

3

使用該SQL查詢:

select * from tbl where id in (select max(id) from tbl group by key); 
+0

工作完全!謝謝 – thesam

0
SELECT * 
FROM mytable 
    JOIN 
     (SELECT MAX(id) AS maxid 
      FROM mytable 
      GROUP BY "key" 
     ) AS grp 
     ON grp.maxid = mytable.id 

附註:(爲表,字段等),最好不要使用保留字像key作爲標識符

0

你可能分裂主要任務分爲兩個子程序。

你可以用這種方法移動第一獲取所有ID /鍵值,則得到IDAB鍵的最新值,

現在你可以伊斯利編寫一個查詢,以獲得最新值對於AB,因爲對於AB鍵,您的值爲id的

0

沒有嵌套進行選擇,或JOIN的但僅當字段確定「最新的」是主鍵(例如自動增量):

SELECT * FROM table GROUP BY key DESC; 
相關問題