GROUP_CONCAT限制为100个值无效

时间:2016-10-18 15:09:12

标签: mysql sum limit group-concat having

我正在尝试提取受限制为100的修改历史字段的总和并按每个帐户分组,但下面的查询从CDR_Accounts中提取所有行的总和,其中charge_quantity = 60,并且不限制为100。

table1 = table2,这些是临时表。我简化了查询并过滤了临时表中的所有数据。

然而,查询仍然给出了所有历史记录的总和。但是我需要只有100个的总和。

table1 / table2格式:

+-----------+----------+------------+-------------+----------------------+
| i_account | id       | account_id | CLD         | history              |
+-----------+----------+------------+-------------+----------------------+
|     10272 | 46479968 | 0814781293 | 27815212963 | +1x60@1.32d100%=1.32 |
|      6316 | 46480100 | 0813741427 | 27780233136 | +1x60@1.32d100%=1.32 |
|      6316 | 46480107 | 0813741427 | 27780233136 | +1x60@1.32d100%=1.32 |
|     13830 | 46480435 | 0814346396 | 27781356515 | +1x60@1.32d100%=1.32 |
|     13830 | 46480436 | 0814346396 | 27781356515 | +1x60@1.32d100%=1.32 |
+-----------+----------+------------+-------------+----------------------+

帐户

SELECT sum(SUBSTRING_INDEX(history,'=',-1)),
                 cdr.i_account,
                 cdr.account_id
         FROM table1 cdr
           WHERE cdr.id IN
               (SELECT SUBSTRING_INDEX(group_concat(s.id SEPARATOR ','), ',', 100) id
                FROM table2 s
                GROUP BY id
                )
                  GROUP BY i_account;

1 个答案:

答案 0 :(得分:0)

我不清楚你的查询是做什么的。但是,限制适用于包括分组的最终结果。如果您需要限制GROUP_CONCAT的结果,请首先应用限制,然后应用分组