0

最好不要下载整个数据库并扫描每个项目,是否有一个 MySQL 查询可以访问该表:

__________________________________
|   ColID   |      Timestamp      |
|___________|_____________________|
|_____2_____|_2012-08-01_12:00:00_|
|_____1_____|_2012-08-01_12:01:00_|
|_____3_____|_2012-08-01_12:02:00_|
|_____3_____|_2012-08-01_12:03:00_|
|_____2_____|_2012-08-01_12:04:00_|
|_____3_____|_2012-08-01_12:05:00_|

并且只返回这些行:

__________________________________
|   ColID   |      Timestamp      |
|___________|_____________________|
|_____1_____|_2012-08-01_12:01:00_|
|_____2_____|_2012-08-01_12:04:00_|
|_____3_____|_2012-08-01_12:05:00_|

以便只提取一个ColID最高的Timestamp

4

2 回答 2

1

GROUP BY与 一起使用MAX

SELECT   ColID, MAX(Timestamp) AS Timestamp
FROM     tbl
GROUP BY ColID

此外,您可能希望将来记住一个提示:如果您还想为每个最大值选择可能在同一个表中的其他列,ColID由于 的性质,您不能在上述查询中直接选择它GROUP BY。您需要将查询包装在 id 和 date 列上的连接子选择中:

SELECT b.*
FROM   tbl a
JOIN   (
       SELECT   ColID, MAX(Timestamp) AS max_timestamp
       FROM     tbl
       GROUP BY ColID
       ) b ON a.ColID = b.ColID AND a.max_timestamp = b.Timestamp
于 2012-08-01T10:57:23.633 回答
1

是的,您可以通过使用GROUP BYwith MAXas 来实现这一点:

SELECT ColID, MAX(Timestamp) AS max_Timestamp      
FROM my_table
GROUP BY ColID;
于 2012-08-01T10:57:31.800 回答