自定义分组依据 table 无效

Group by on custom table not working

我有以下查询:

SELECT bt.app_id, MAX(bt.id) as user_id
FROM (SELECT bt.*
  FROM user bt
  WHERE bt.app_id IN (SELECT bs.id
                                FROM
                                  (SELECT max(id) as id, app_id, count(id) AS count
                                   FROM user_turn bt
                                   WHERE  bt.state = 'pending'
                                   GROUP BY app_id) as bts
                                  INNER JOIN user bs ON bs.id = bts.user_id
                                  INNER JOIN club c ON c.id = bs.club_id
                                WHERE count > 1)
    ORDER BY bt.app_id DESC, bt.id ASC) bt
WHERE bt.state = 'finished'
GROUP BY bt.app_id, bt.id
ORDER BY bt.app_id DESC, bt.id DESC;

但这似乎不适用于 GROUP BY bt.app_id, bt.id

当我得到类似的东西时:

app_id         user_id
10010          25024
10010          25022
10008          24795
10008          24784
10006          24783

我认为它会 GROUP BY app_id 但它显然有重复,例如 10010

这不起作用的原因是什么?

仅在 bt.bet_setting_id 上简单地执行 GROUP BY 会有什么问题吗?将您的查询更改为以下内容:

SELECT bt.bet_setting_id, MAX(bt.id) as bet_turn_id
...
GROUP BY bt.bet_setting_id
ORDER BY bt.bet_setting_id DESC, MAX(bt.id) DESC

因为您是按 bet_setting_idid 的组合分组的,所以使用后者的 MAX 是没有意义的,因为 [= 永远只有一个值每组14=]。

根据查询,您的分组是正确的。但是重命名外部别名,以便它可以清楚..因为你正在使用子查询并且两者具有相同的名称 BT 并删除 bt_id