分组自定义表不起作用

时间:2016-01-06 10:14:11

标签: sql database informix

我有以下查询:

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

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

2 个答案:

答案 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_idid的组合进行分组,因此后者的MAX毫无意义,因为{{1}只有一个值在每个小组中。

答案 1 :(得分:0)

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