对于我的例子,我会这样写。
我有一张表calles地图。有这样的条目(简单):
ID,TITLE,MAP,VERSION.
现在我插入三张地图:
INSERT INTO maps VALUES(1,'MAP1','some blob stuff',1);
INSERT INTO maps VALUES(2,'MAP2','some blob stuff',1);
INSERT INTO maps VALUES(3,'MAP1','some blob stuff',2);
现在我有两张地图,但有两个版本。
我现在如何只选择每个的最新地图,那么它只会显示MAP1 vers 2和MAP2 vers 1?
答案 0 :(得分:2)
SELECT M1.*
FROM maps M1
WHERE M1.version = (SELECT MAX(M2.version) FROM maps M2 WHERE M2.title = M1.title)
但我不明白为什么你需要避免GROUP BY
SELECT M1.id, M1.title, M1.map, MAX(M1.version)
FROM maps M1
GROUP BY M1.title
编辑 - 正如指出这第二个查询不能保证正确的id和地图值,坚持第一个
答案 1 :(得分:0)
SELECT * FROM maps m1 WHERE NOT EXISTS
(SELECT * FROM maps m2 WHERE m2.title = m1.title AND m2.version > m1.version)