본문 바로가기
MySql

MySQL PostgreSQL array_agg와 같은 MYSQL 배열 집계 함수

by 베이스 공부 2020. 11. 3.
반응형

MYSQL에 두 개의 테이블이 있는데 MYSQL에 array_agg () FROM postgreSQL로 집계 함수가 있는지 궁금합니다.

표 1 속성에는 8 개의 레코드 만 있습니다. 표 2는 속성을 캡처 한 사람을 기록하므로 동일한 속성에 대해 1 번 또는 n 번이 될 수 있으며이 Qry를 얻었습니다.

SELECT p.id, pcb.users_admin_id as uid
FROM properties p
INNER JOIN prop_captured_by pcb ON p.id = pcb.property_id
-- GROUP BY p.id

id    uid
200   1
200   80
202   1
202   80
211   1
211   10
211   81
215   10 ...

GROUP BY 부분을 사용하면 다음과 같이 표시됩니다.

id    uid
200   1
202   1
211   1
215   10 ...

users_admin_id의 첫 번째 값이 아닌 다른 데이터가 손실됩니다. postgreSQL의 array_agg () 함수를 사용하여 원하는 결과를 얻을 수 있다는 것을 알고 있지만 MYSQL에서 수행하는 방법을 알 수 없습니다.

이것이 나의 소망 결과 :

id    uid
200   1,80 //an array, I don't mind about the separator, could be anything.
202   1,80
211   1,10,81
215   10 ...

UNION, GROUP BY, INNER JOIN을 시도했습니다 ... 운이 없습니다 ... 포인터가 있습니까?

업데이트


SELECT p.id, group_concat(pcb.users_admin_id) as uid, group_concat(ua.name) as uin
FROM properties p
INNER JOIN prop_captured_by pcb ON p.id = pcb.property_id
INNER JOIN users_admin ua ON ua.id = pcb.users_admin_id
group by p.id;

 

해결 방법

 

GROUP_CONCAT () 를 다음과 같이 사용하고 싶습니다.

SELECT p.id, group_concat(pcb.users_admin_id) as uid
FROM properties p
INNER JOIN prop_captured_by pcb 
ON p.id = pcb.property_id
group by p.id;

 

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

 

 

반응형

댓글