【发布时间】:2018-05-28 15:41:33
【问题描述】:
我知道有很多与此相关的主题。我尝试对它们进行研究,但我无法做到这一点。
我有一个以下lunch_transaction 表:
id | user_id | date | due_amount | updated_on
---------------------------------------------------------------------------
1 | 145 | 2018-05-28 12:56:46 | 30.00 | 2018-05-28 12:56:46
2 | 134 | 2018-05-28 13:33:02 | 30.00 | 2018-05-28 13:33:02
3 | 134 | 2018-05-28 13:38:50 | 60.00 | 2018-05-28 13:38:50
4 | 134 | 2018-05-28 13:38:59 | 60.00 | 2018-05-28 13:38:59
5 | 134 | 2018-05-30 13:39:17 | 60.00 | 2018-05-28 13:39:17
6 | 145 | 2018-05-30 15:20:00 | 45.00 | 2018-05-28 15:00:17
我想获取每个用户的最新日期时间记录。
因此所需的输出应为:
145 | 2018-05-30 15:20:00 | 45.00 | 2018-05-28 15:00:17
134 | 2018-05-30 13:39:17 | 60.00 | 2018-05-28 13:39:17
但我得到以下输出:
145 | 2018-05-30 15:20:00 | 30.00 | 2018-05-28 12:56:46
134 | 2018-05-30 13:39:17 | 30.00 | 2018-05-28 13:33:02
即使列值也不属于同一行,即结果集中的字段值似乎是来自不同行的混合。
这是我的查询:
SELECT user_id, MAX(date), due_amount, updated_on
FROM lunch_transaction
GROUP BY user_id
什么应该是正确的查询来实现所需的输出?
【问题讨论】:
-
继续。再努力一点。
-
看看stackoverflow.com/questions/5986127/…,让您朝着正确的方向前进。
-
尝试将
MAX(date)更改为仅date并在最后添加ORDER BY date desc -
使用正确的
GROUP BY。将所有非聚合列放入GROUP BY。一旦你修复它,你可能会发现你的查询出了什么问题。
标签: mysql sql max aggregate-functions