我有一个名为SkillSets
的表格,其中包含SkillID
字段和SkillSetID
字段。我们说我在这张表中有记录,如:
SkillID SkillSetID
------- ----------
750 2
750 4
750 5
751 3
751 4
751 6
我需要一个产生以下内容的查询:
SkillID SkillSetIDs
------- ----------
750 2,4,5
751 3,4,6
对我来说,我记得看到这个使用某种xml子句,但无法找到任何关于它的东西,只是不知道如何在不使用游标或while循环的情况下完成它。你能帮忙吗?
答案 0 :(得分:0)
在MySQL中,这可行:
SELECT SkillID, GROUP_CONCAT(SkillSetID) As SkillSetIDs
FROM skills
GROUP BY SkillID
但是GROUP_CONCAT
是特定于MySQL的,所以如果你使用的是另一个数据库,那就不会飞。
答案 1 :(得分:0)
这会帮助你吗?
select 'test' as Test, 1 as Item
into #test
union select 'test2', 2
union select 'test', 3
union select NUll, 4
union select 'test', 5
select t2.test, STUFF((SELECT ', ' + cast(t1.Item as varchar (10) )
FROM #test t1 where t2.test = t1.test
FOR XML PATH('')), 1, 1, '')
from #test t2
group by t2.test
答案 2 :(得分:0)
查询:
SELECT
s.SkillID,
STUFF((
SELECT ',' + SkillSetID
FROM SkillSets s2
WHERE s2.SkillID = s.SkillID
FOR XML PATH('')
), 1, 1, '') AS SkillSetIDs
FROM SkillSets s
GROUP BY s.SkillID
结果:
| SKILLID | SKILLSETIDS |
-------------------------
| 750 | 2,4,5 |
| 751 | 3,4,6 |