수정 된 기록 필드의 합을 100으로 제한하고 각 계정별로 그룹화하려고합니다. 아래 쿼리는 charged_quantity = 60 인 CDR_Accounts의 모든 행의 합계를 추출하며 제한하지 않습니다GROUP_CONCAT가 100 개의 값으로 제한되지 않습니다.
table1 = table2이며 임시 테이블입니다. 쿼리를 단순화하고 임시 테이블의 모든 데이터를 필터링했습니다.
그럼에도 불구하고 쿼리는 여전히 모든 '기록'필드의 총 합계를 제공하지만 합계가 100 개만 필요합니다.
표/표 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은 쉼표로 구분 된 문자열을 만듭니다. 그래서 여러분의 시작은 다음과 같습니다 :'WHERE '60'IN ('10, 20,40,60 ')'. 해당 하위 선택을 '(SELECT charged_quantity FROM CDR_Accounts GROUP BY i_account LIMIT 100)'로 변경할 수 있습니다. – CptMisery
@cptMisery in 하위 쿼리는 mysql에서 불가능합니다. 또한 쿼리를 수정했지만 예상 결과가 아직 나오지 않습니다. – Vadym