首页 新闻 会员 周边 捐助

如何用SQL查出如下格式的数据呢?(数据里面带分隔符)

0
[已解决问题] 解决于 2019-05-20 20:48

有Emp、Dept两张表

Dept表数据如下

ID

NAME

EMP_ID

D1

技术部

E1/E2

D2

财务部

E3

 

Emp表数据如下

ID

NAME

DEPT_ID

E1

刘备

D1

E2

关羽

D1

E3

张飞

D2

 

如何通过SQL查出如下结果集

ID

NAME

EMP_ID

EMP_NAME

D1

技术部

E1/E2

刘备/关羽

D2

财务部

E3

张飞

renguanyu的主页 renguanyu | 小虾三级 | 园豆:841
提问于:2018-10-16 15:16
< >
分享
最佳答案
0

我的做法跟楼上的一样,都是用group_concat()。
表dept:

表emp:

SQL:
select dept.ID, dept.NAME, dept.EMP_ID, group_concat(emp.NAME separator '/') 'emp_name'
from dept
join emp
on dept.id = emp.dept_id
group by dept.ID
;
执行结果:

奖励园豆:5
猪仔95 | 菜鸟二级 |园豆:223 | 2019-01-17 17:59

学到了group_concat的用法,不过我的问题描述有一些问题,我重开了一个问题

renguanyu | 园豆:841 (小虾三级) | 2019-05-20 20:54
其他回答(5)
0

这是哪个**设计的数据库,开除了吧。

爱编程的大叔 | 园豆:30844 (高人七级) | 2018-10-16 18:13
0

https://www.cnblogs.com/WangShuaishuai/p/9022952.html

参考一下,我之前遇到过这种类型的数据库表。

徒然喜欢你 | 园豆:1741 (小虾三级) | 2018-10-17 10:03
0

SELECT d.ID,d.NAME,d.EMP_ID,n.EMP_NAME
FROM Dept d LEFT JOIN
(
SELECT DEPT_ID,
EMP_NAME=stuff((select '/'+NAME from dbo.Emp
for xml path('')), 1, 1, '')
FROM dbo.Emp GROUP BY DEPT_ID
)n ON d.id=n.DEPT_ID

硬编码的,可以试试。

fangq | 园豆:417 (菜鸟二级) | 2018-10-17 10:07

stuff是sqlserver的函数吧,mysql里貌似没有

支持(0) 反对(0) renguanyu | 园豆:841 (小虾三级) | 2019-05-20 20:45
0

数据表设计就有问题

通信的搞程序 | 园豆:1757 (小虾三级) | 2018-10-17 21:01
0

自足孤独者 | 园豆:208 (菜鸟二级) | 2019-01-17 14:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册