繁体   English   中英

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

[英]Join one row to multiple rows in another table in Mysql

我有一个名为(用户)和(部门)的两个表,一个用户可以拥有任意数量的部门)。 前任:

用户

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

部门

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

我创建了另一个表调用 user_dept

用户部门

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

第三个表 (user_dept) 列是来自用户表和部门表的 FK。

我想要的是调用用户和部门之间的单行部门(,)。

您可以使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM