2011-06-18 61 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; 
相关问题