-1
我试图提取修改后的历史记录字段限制为100并按每个帐户分组的总和,但下面的查询从CDR_Accounts中提取带有charge_quantity = 60的所有行的总和,并且不会限制到100.GROUP_CONCAT限制为100个值不起作用
table1 = table2这些是临时表。我简化了查询并过滤了临时表中的所有数据。
尽管如此,查询仍然给我所有'历史'字段的总和,但是我只需要它们中的100个的总和。
表1 /表2格式:
+-----------+----------+------------+-------------+----------------------+
| i_account | id | account_id | CLD | history |
+-----------+----------+------------+-------------+----------------------+
| 10272 | 46479968 | 0814781293 | 27815212963 | [email protected]%=1.32 |
| 6316 | 46480100 | 0813741427 | 27780233136 | [email protected]%=1.32 |
| 6316 | 46480107 | 0813741427 | 27780233136 | [email protected]%=1.32 |
| 13830 | 46480435 | 0814346396 | 27781356515 | [email protected]%=1.32 |
| 13830 | 46480436 | 0814346396 | 27781356515 | [email protected]%=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;
@Tim Biegeleisen目的是限制为100,无论是使用“限制”还是不使用 – Vadym
我都不认为group_concat可以以您尝试的方式使用。 group_concat创建一个逗号分隔的字符串。所以你的起点看起来像这样:'''''''''('10,20,40,60')'。你可以将这个子选择改为'(SELECT charge_quantity FROM CDR_Accounts GROUP BY i_account LIMIT 100)' – CptMisery
@CptMisery在子查询中的限制在mysql中是不可能的。此外,我已修改查询,但它仍然给我不期望的结果 – Vadym