从 MySQL 智能选择



我对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

最新更新