table:uuid,version,datetime
版本不是唯一的,但想法是仅获取给定uuid的最新日期时间的行
SELECT * FROM table WHERE uuid='bla' GROUP BY version ORDER BY datetime desc
...当然获取datetime asc结果 - 有没有办法将该组"预先排序"到desc,以便只获取最新版本?
The*_*ter 23
由于该表只有那3个字段,并且您通过uid进行过滤,因此您只需使用不带JOIN的MAX:
SELECT version, MAX(datetime) Maxdatetime
FROM table
WHERE uuid='bla'
GROUP BY version
Run Code Online (Sandbox Code Playgroud)
但是,如果表中有更多字段,或者您没有过滤uid- 您需要先为每个版本获取MAX日期时间,然后选择行:
SELECT t.uuid, t.version, t.datetime
FROM table t JOIN (
SELECT version, MAX(datetime) Maxdatetime
FROM table
WHERE uuid='bla'
GROUP BY version
) r ON t.version = r.version AND t.datetime = r.Maxdatetime
WHERE t.uuid='bla'
ORDER BY t.datetime desc
Run Code Online (Sandbox Code Playgroud)
小智 5
SELECT * FROM
(SELECT * FROM table WHERE uuid='bla' ORDER BY datetime desc) table
GROUP BY version;
Run Code Online (Sandbox Code Playgroud)