我有以下查询:
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
这不起作用的原因是什么?
答案 0 :(得分:1)
仅在GROUP BY
上执行bt.bet_setting_id
会有什么问题吗?将您的查询更改为以下内容:
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_id
和id
的组合进行分组,因此后者的MAX
毫无意义,因为{{1}只有一个值在每个小组中。
答案 1 :(得分:0)
根据查询,您的分组是正确的。但重命名外部别名,以便它可以清楚..因为您使用子查询并且两者都具有相同的名称BT并删除bt_id