0

我对 MySQL 不是很好,所以我需要你的帮助。

我有列的表

logId、playerId、playerName、updateTime

logId是主要的并且是自动递增的。 playerId是 int(11) playerName是 varChar(36) updateTime也是 int(输入时存储 unix 时间戳)

我在数据库中有这些条目:

1, 444, 约翰, 1379434514

2, 444, 约翰, 1379434414

3, 445, 迈克, 1379434410

4, 444, 约翰, 1379434614

我想为每个唯一的 playerId 只获取一个,在“updateTime”列中具有最大的整数(在这个例子中,它是一个 logId 为 4 的 playerId 为 444)。

有什么方法可以对特定 playerId 的所有条目进行分组,然后只选择其中一个(最新的)?谢谢!

4

2 回答 2

3

您需要groupwise maximum,可以通过将表与updateTime为每个组选择标识(最大值)的子查询连接来获得:

SELECT * FROM my_table NATURAL JOIN (
  SELECT playerId, MAX(updateTime) updateTime FROM my_table GROUP BY playerId
) t

sqlfiddle上查看。

请注意,您确实应该使用 MySQL 的TIMESTAMP类型 for updateTime; 而且我怀疑这playerName可能违反2NF

于 2013-09-17T16:31:20.357 回答
0

如果我理解正确,您可以简单地写:

select max(updateTime) 
from t1 
group by playerId

请参阅SQLFiddle

于 2013-09-17T16:34:30.153 回答