SELECT * FROM test_user LIMIT 3; #得出(1,2,3) # user和 role是多对多的关系 # 多个user对应多个role # 需求是根据条件查出user列表,并且里面携带了自己所有的role # 本来思路是在user表里面查出所有user # 然后通过for循环,在循环里面用两个left join来查询每个人的所有角色 # 但是在for循环里连表速度会有损耗 # group_concat() # 1、功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。 # 2、语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] ) SELECT u.*,GROUP_CONCAT(r.name) as names FROM test_user u LEFT JOIN test_user_role ur on ur.user_id=u.id LEFT JOIN test_role r on r.id=ur.role_id WHERE u.id in (1,2,3) group by u.id # 通过查出的结果group出结果集