MYSQL数组聚合函数,例如PostgreSQL array_agg

我在MySQL上有两个表,我想知道在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 …没有运气…有任何指针吗?

我正在使用这个人的多对多关系。希望对其他人有用。我需要从第三个表中添加用户名,因此最终查询如下所示:

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;

以上是 MYSQL数组聚合函数,例如PostgreSQL array_agg 的全部内容, 来源链接: utcz.com/qa/425484.html

回到顶部