查询返回错误的行值

时间:2020-08-04 00:23:35

标签: mysql sql

我有以下查询。

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的另一行获取了一个值。

我想念什么?我已经尝试通过命令和其他各种方法来获得相同的结果。

1 个答案:

答案 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;