第1个回答 2019-11-19
查询结果一对多,使用连接查询、左边相同数据,右边不一样的数据,查询出来一条纪录是映射一个对象,你可以使用 GROUP_CONCAT() 分组连接函数,将你写的连接查询语句使用子查询方式放进去。代码例子:三表查询
SELECT s.*,GROUP_CONCAT(s.ur_nickname,s.ur_avatarurl) userData FROM
(SELECT at_id,at_uid,at_title,at_status,at_max_count,at_creation,at_content,at_sign_count,ur_nickname,ur_avatarurl FROM activity
LEFT JOIN activity_join_in ON at_id = ji_at_id LEFT JOIN USER ON ji_uid=ur_id) s
WHERE s.at_uid = 7 GROUP BY at_id
方法二,如果你的表左右俩张表都是有对应关系,且有数据,不为 null. 你可以使用 sql 92 语法:
SELECT
at_id,
at_title,
GROUP_CONCAT(`user`.ur_nickname)
FROM
activity,
activity_join_in,
`user`
WHERE
at_uid = 7
AND activity.at_id=activity_join_in.ji_at_id
AND activity_join_in.ji_uid = `user`.ur_id
注意:
roup_concat默认是把所有结果表述成一行,使用group by 分组函数进行分租。