我有以下查询。
SELECT MAX(activity_id), group_id, parent_group_id FROM dashboard_activity_detail WHERE account_id = 8997 AND parent_group_id IN (5118,5026,4522,3983,3586,3278,3227) AND activity_type_id = 18 GROUP BY parent_group_id;
我的期望是将与最大的activity_id相关联地返回group_id。表中有多行具有相同的parent_group_id。我得到的是来自另一行的值。 activity_id是正确的,parent_group_id是正确的,但是我从group_id的另一行获取了一个值。
我想念什么?我已经尝试通过命令和其他各种方法来获得相同的结果。
答案 0 :(得分:0)
您的期望是错误的。您的查询格式错误,因为SELECT
列与GROUP BY
列不一致。
使用窗口函数(在MySQL 8+中可用):
SELECT da.*
FROM (SELECT da.*,
ROW_NUMBER() OVER (PARTITION BY parent_group_id ORDER BY activity_id DESC) as seqnum
FROM dashboard_activity_detail da
WHERE account_id = 8997 AND
parent_group_id IN (5118,5026,4522,3983,3586,3278,3227) AND
activity_type_id = 18
) da
WHERE seqnum = 1;