2017-04-24 59 views

回答

0

尝试此查询:?

SELECT * 
FROM MyRecords r1 
WHERE version = (SELECT MAX(version) FROM MyRecords r2 WHERE r1.id = r2.id) 
0

你可以抓住每个ID,然后最高版本加入回去取文本值

SELECT * 
    FROM (
    SELECT id, MAX(version) version 
     FROM MyRecords 
    GROUP BY id 
) q JOIN MyRecords r 
    ON q.id = r.id 
    AND q.version = r.version 

SQLFiddle

0

在SQLite的3.7.11或更高版本,可以简单地use max() to select which row in a group to return

SELECT id, 
     MAX(version) AS version, 
     text 
FROM MyRecords 
GROUP BY id; 
+1

这会不会只是代替实际'version'场返回的记录中已知最大版本值的值,而不是实际返回所有丢弃具有相同'id'但更低'version'的实际记录? – Ivan

+0

否; [GROUP BY](http://www.sqlite.org/lang_select.html#resultset)根据'id'返回一行,正如链接中所解释的那样,'text'值来自正确的行。 –

相关问题