I got two tables on MYSQL, I wonder if there is any aggregate function on MYSQL as array_agg() FROM postgreSQL.
TABLE 1 properties Only have 8 records TABLE 2 record
MySQL 5.7.22 introduced JSON_ARRAYAGG()
and JSON_OBJECTAGG()
. Since you want the user name as well, you could use the latter:
SELECT p.id, JSON_OBJECTAGG(pcb.users_admin_id, 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;
DB Fiddle
You want to use GROUP_CONCAT()
like
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;
I think you want group_concat()
:
SELECT p.id, GROUP_CONCAT(pcb.users_admin_id) as uids
FROM properties p INNER JOIN
prop_captured_by pcb
ON p.id = pcb.property_id
GROUP BY p.id;
This produces a comma-delimited string, but that is as close to an array that you get in MySQL.