【问题标题】:Specify which row to return on SQLite Group By指定在 SQLite Group By 上返回哪一行
【发布时间】:2010-05-18 08:16:05
【问题描述】:

我面临一个难题。我将所有文档的所有版本存储在一个表中。每个文档都有一个唯一的 id,版本存储为一个整数,每次有新版本时递增。

我需要一个仅从数据库中选择每个文档的最新版本的查询。虽然使用 GROUP BY 有效,但如果版本未按版本顺序插入数据库中,它似乎会中断(即,它采用最大 ROWID,但并不总是最新版本)。

请注意,每个文档的最新版本很可能是不同的编号(即文档 A 的版本为 3,文档 B 的版本为 6)。

我束手无策,有人知道怎么做吗(选择所有文档,但每个 document_id 只返回一条记录,并且返回的记录应该具有最高的版本号)?

【问题讨论】:

    标签: sql sqlite group-by


    【解决方案1】:

    您需要进行子选择以找到最大版本,例如

    假设表名为 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      相关资源
      最近更新 更多