在 Mysql 中将一行连接到另一行中的多行 table

Join one row to multiple rows in another table in Mysql

我有两个 table,分别称为(用户)和(部门),一个用户可以拥有任意数量的部门)。例如:

用户

id     name
-----------
1     user1
2     user2
3     user3

部门

id     name
-----------
1     dept1
2     dept2
3     dept3

我已经创建了另一个 table 调用 user_dept

user_dept

u_id     d_name
----------------
1           1
1           2
1           3
2           2
2           3

第三 table (user_dept) 列来自用户 table 和部门 table.

我想要的是给用户打电话,部门之间用 (,) 分隔成一行。

您可以使用 group_concat() 和相关的子查询:

select 
    u.*,
    (
        select group_concat(d.name)
        from user_departments ud 
        inner join departments d on d.d_id = ud.id
        where ud.u_id = u.id
    ) dept_names
from users u

这也可以通过连接和外部聚合来完成:

select u.*, group_concat(d.name) dept_names
from users u
left join user_departments ud on ud.u_id = u.id
left join departments d on d.d_id = ud.id
group by u.id