我在使用mysql返回组的最大值时遇到问题
这是我的专栏
id | date | time | tran
--------+----------------+----------+----------
1 | 2014/03/31 | 17:23:00 | 1234
1 | 2014/03/31 | 17:24:00 | 3467
2 | 2014/03/31 | 17:26:00 | 2345
我的查询
SELECT id, max(date), MAX(time) , tran
FROM table
GROUP BY id
结果
id | date | time | tran
--------+----------------+----------+----------
1 | 2014/03/31 | 17:26:00 | 1234
2 | 2014/03/31 | 17:24:00 | 2345
预期答案应该是
id | date | time | tran
--------+----------------+----------+----------
1 | 2014/03/31 | 17:26:00 | 3467
2 | 2014/03/31 | 17:24:00 | 2345
您可以通过对同一张表的最大值使用自联接来完成此操作
SELECT t.* FROM
Table1 t
JOIN (
SELECT id, max(date) date, MAX(time) time , tran
FROM Table1
GROUP BY id) t2
ON(t.id=t2.id AND t.date=t2.date AND t.time=t2.time)
日期和时间的最大值之间可能会有所不同,因此您应该使用一个字段为当前架构保存日期和时间,这是最佳选择
SELECT t.* FROM
Table1 t
JOIN (
SELECT id,
max(concat(date,' ',time)) `date_time`
FROM Table1
GROUP BY id) t2
ON(t.id=t2.id AND (concat(t.date,' ',t.time))=t2.date_time )
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句