我有一个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
我尝试了一些不同的查询,但我没有成功。如何仅为表中的每个“键”值选择最新行?
答案 0 :(得分:4)
使用此SQL-Query:
select * from tbl where id in (select max(id) from tbl group by key);
答案 1 :(得分:0)
SELECT *
FROM mytable
JOIN
( SELECT MAX(id) AS maxid
FROM mytable
GROUP BY "key"
) AS grp
ON grp.maxid = mytable.id
附注:最好不要使用key
等保留字作为标识符(表格,字段等)。
答案 2 :(得分:0)
您可以将主任务拆分为两个子程序。
您可以使用该方法首先检索所有 id / key 值,然后获取 id ,以获取A
和B
的最新值键,
现在,您可以轻松编写查询以获取A
和B
的最新值,因为A
和{{1}的值 id 密钥。
答案 3 :(得分:0)
没有嵌套的SELECT或JOIN,但仅当确定“最新”的字段是主键时(例如自动增量):
SELECT * FROM table GROUP BY key DESC;