【发布时间】:2016-06-22 12:13:44
【问题描述】:
几天前我在网上查看了如何在 sql server 上使用 STUFF,我看到的大多数示例只涉及两个表,而我的查询正在通过 3 个表,但我无法让它工作这是没有 STUFF 函数的查询,它可以获取我想要的所有数据:
select c.category_name,r.role_name
from categories as c
join role_categ as rc on c.category_id=rc.category_id
join roles as r on r.role_id=rc.role_id
where rc.c_read='1';
我想要的是你有一个 Category_name 然后 Id 想要所有 role_names 在第一行的一个单元格中:
BCM-Télécopieur-影印机 Admin,Administation这里有什么东西功能但不工作jsut给了我与其他查询相同的表
select c.category_name,STUFF((
select ','+r.role_name
from roles as r
where rc.role_id=r.role_id
for xml path('')),1,1,'')
from role_categ as rc
join categories as c on c.category_id=rc.category_id
任何帮助将不胜感激。
【问题讨论】:
-
尝试将
SELECT DISTINCT添加到主查询并将,更改为- -
STUFF不进行任何字符串连接。FOR XML在这里做繁重的工作,并产生了一个类似,abc,def,ghi的字符串。STUFF所做的只是删除前导逗号。
标签: sql sql-server string tsql concat