SQLite - 选择具有特定字段值的最新行

时间:2011-06-18 09:16:59

标签: sql 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

我尝试了一些不同的查询,但我没有成功。如何仅为表中的每个“键”值选择最新行?

4 个答案:

答案 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 ,以获取AB的最新值键,

现在,您可以轻松编写查询以获取AB的最新值,因为A和{{1}的值 id 密钥。

答案 3 :(得分:0)

没有嵌套的SELECT或JOIN,但仅当确定“最新”的字段是主键时(例如自动增量):

  SELECT * FROM table GROUP BY key DESC;