我对MySQL不是很好,所以我需要你的帮助。
我有带列的表格
logId, playerId, playerName, updateTime
logId 是主的,并且是自动递增的。playerId is int(11)玩家名称是 varChar(36)updateTime 也是 int(在输入时存储 unix 时间戳)
我在数据库中有这些条目:
1, 444, 约翰, 1379434514
2, 444, 约翰, 1379434414
3, 445, 迈克, 1379434410
4, 444, 约翰, 1379434614
我只想为每个唯一的 playerId 获取一个,"updateTime"列中最大的整数(在本例中,它是 logId 为 4 的整数,玩家 ID 为 444)。
有什么方法可以将特定 playerId 的所有条目分组,然后选择其中一个(最新的)?谢谢!
您需要按组的最大值,这可以通过将表与为每个组选择标识(最大)updateTime
的子查询联接来获得:
SELECT * FROM my_table NATURAL JOIN (
SELECT playerId, MAX(updateTime) updateTime FROM my_table GROUP BY playerId
) t
在sqlfiddle上看到它。
请注意,你真的应该使用MySQL的TIMESTAMP
类型进行updateTime
;此外,我怀疑playerName
可能违反2NF。
如果我理解正确,你可以简单地写:
select max(updateTime)
from t1
group by playerId
请参阅 SQLFiddle