在SQLite中指定要返回的行数(Group By)。

4
我面临一个比较棘手的问题。我将所有文档的所有版本都存储在单个表中。每个文档都有一个唯一的ID,版本号以整数形式存储,每次有新版本时都会递增。
我需要一条查询语句,仅从数据库中选择每个文档的最新版本。虽然使用GROUP BY可以实现,但如果版本不是按版本顺序插入到数据库中(即它获取的是最大ROWID,这不总是最新版本),则会出现问题。
请注意,每个文档的最新版本很可能是不同的数字(即文档A处于第3版,而文档B处于第6版)。
我已经束手无策了,有人知道如何做到这一点吗(选择所有文档,但仅返回每个document_id的一个记录,并且返回的记录应具有最高版本号)?
1个回答

6

您需要执行子查询来查找最大版本,类似于以下内容:

假设表名为docs

select t.*
   from docs t
       inner join ( select id, max(version) as ver from docs group by id ) as t2
          where t2.id = t.id and t2.ver = t.version

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接