我得到了两个MYSQL表,我不知道是否有任何聚合函数MYSQL array_agg()从PostgreSQL。MYSQL数组聚合函数像PostgreSQL array_agg
表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 ...没有运气... 任何指针?
UPDATE
我使用从这个家伙的many to many relations。希望它对别人有用。我需要从第三个表添加用户的名称,所以最终的查询看起来是这样的:
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;
这对我的作品! –