如图的u1和u2 用MYSQL查出来跟下方的格式一样的有办法吗 纯SQL不行的话可以加JS函数
mysql有GROUP_CONCAT
select id,name,CONCAT('[',temptb.tag,']') as tag from u1 left join(
SELECT
u1id,GROUP_CONCAT('{"id":',u2.id,',"tag":"',u2.tag,'"}') as tag
FROM
u2
group by u1id)temptb on temptb.u1id=u1.id
以下sql在mysql8.0测试通过,mysql是支持json处理的,使用原生json效率会比字符串拼接要高,而且可以避免字符串中存在json保留符号导致生成的json字符串无法被解析的问题
SELECT
u1.id,
u1.NAME,
JSON_ARRAYAGG(JSON_OBJECT('id',u2.id,'tag',u2.tag))
FROM
u1,
u2
WHERE
u1.id = u2.u1id
GROUP BY
u1.id,
u1.NAME;