我的数据库是
id fileId version
1 1 1.0
2 1 1.1
3 2 1.0
4 2 1.1
5 2 1.12
所需的结果集是
id fileId version
2 1 1.1
5 2 1.12
我尝试通过此“选择不同的文件ID,从表名顺序按文件ID desc 的版本”
我的数据库是
id fileId version
1 1 1.0
2 1 1.1
3 2 1.0
4 2 1.1
5 2 1.12
所需的结果集是
id fileId version
2 1 1.1
5 2 1.12
我尝试通过此“选择不同的文件ID,从表名顺序按文件ID desc 的版本”
我想你想要:
select fileid, max(version)
from t
group by fileid;
SELECT f1.id, f1.fileID, f1.version
FROM files AS f1
LEFT JOIN files AS f2
ON f1.fileID = f2.fileID
AND f1.version < f2.version
WHERE f2.fileID IS NULL
同样为了更快的速度,建议在 id 和 fileID 上使用索引
ALTER TABLE `files` ADD INDEX ( `id` )
ALTER TABLE `files` ADD INDEX ( `fileID` )