본문 바로가기
MySql

MySQL 내부에 카운트가있는 mysql group_concat?

by 베이스 공부 2020. 9. 18.
반응형

2 개의 테이블, 사용자 및 팔로우가 있습니다. 다음 테이블에는 status라는 열이 있습니다. 각 사용자가 상태별로 그룹화 한 팔로우 수를 계산하고 싶습니다.

아래 쿼리는 각 사용자의 각 상태 유형에 대한 레코드를 반환합니다.

SELECT users.name as user_name, f.status, count(f.id) 
FROM users
JOIN application_follows f ON f.user_id = users.id
GROUP BY users.id, f.status
ORDER BY users.id

다음과 같은 것을 반환합니다.

user_name     status     count

mike          new         10
mike          old         5
tom           new         8
tom           old         9

그러나 나는 다음과 같은 더 친근한 것을 원합니다.

user_name     status_count

mike          new,10|old,5
tom           new,8|old,9

group_concat 및 count를 사용해 보았지만 작동하지 않았습니다. 단서가 있습니까?

 

해결 방법

 

GROUP BY를 두 번 사용해야합니다. 먼저 다음에서 (user_id, status)에서 카운트를 가져오고 조인 된 테이블에서 user_id를 연결하여 연결해야합니다.

SELECT users.name, GROUP_CONCAT( CONCAT(f.status, ',', f.cnt) SEPARATOR '|' )
FROM users 
JOIN
( SELECT user_id, status, count(id) AS cnt
  FROM application_follows
  GROUP BY user_id, status ) f
ON f.user_id = users.id
GROUP BY users.id

 

참조 페이지 https://stackoverflow.com/questions/9934361

 

 

반응형

댓글