自定义分组依据 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_id
和 id
的组合分组的,所以使用后者的 MAX
是没有意义的,因为 [= 永远只有一个值每组14=]。
根据查询,您的分组是正确的。但是重命名外部别名,以便它可以清楚..因为你正在使用子查询并且两者具有相同的名称 BT 并删除 bt_id
我有以下查询:
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_id
和 id
的组合分组的,所以使用后者的 MAX
是没有意义的,因为 [= 永远只有一个值每组14=]。
根据查询,您的分组是正确的。但是重命名外部别名,以便它可以清楚..因为你正在使用子查询并且两者具有相同的名称 BT 并删除 bt_id