반응형
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
반응형
'MySql' 카테고리의 다른 글
MySQL Magento-재색 인 프로세스에 문제가 있습니다.-카탈로그 제품 (0) | 2020.09.18 |
---|---|
MySQL 난수를 삽입하는 방법 MySql (0) | 2020.09.18 |
MySQL 유효한 제약 조건이있는 "SQLSTATE [23000] : 무결성 제약 조건 위반" (0) | 2020.09.18 |
MySQL 사용자가 데이터베이스를 생성하려면 어떤 권한이 필요합니까? (0) | 2020.09.18 |
MySQL 연결이 끊어 지거나 연결이 끊어진 트랜잭션에서 MySQL 롤백 (0) | 2020.09.18 |
댓글