如果您使用的是SQL Server 2005+。然后您可以这样做:
SELECt JobsTagMap.JobID, STUFF ( ( SELECT ',' +Title FROM Tags WHERe Tags.TagID=JobsTagMap.TagID FOR XML PATH('') ) ,1,1,'') AS TitleFROM JobsTagMap编辑
因为您没有向我们显示不同表中的表结构和数据。很难知道。因此,我假设您的表结构如下所示:
CREATE TABLE JobsTagMap( JobID INT, TagID INT)CREATE TABLE Tags( TagID INT, Title VARCHAr(100))
有了这个数据:
INSERT INTO JobsTagMapVALUES(1,1),(1,2),(2,2),(2,4),(2,5)INSERT INTO TagsVALUES(1,'Tag1'),(2,'Tag2'),(3,'Tag2'),(4,'Tag5'),(5,'Tag9')
如果获取该数据,则显示的数据
JobID不能唯一。您可能在某个
Job表的唯一位置有一个表。如果您只想使用显示的这些表,则需要执行以下操作:
;WITH CTEAS( SELECt ROW_NUMBER() OVER(PARTITION BY JobID ORDER BY JobID) AS RowNbr, JobsTagMap.* FROM JobsTagMap)SELECt *, STUFF ( ( SELECT ',' +Title FROM Tags JOIN JobsTagMap ON Tags.TagID=JobsTagMap.TagID WHERe JobsTagMap.JobID=CTE.JobID FOR XML PATH('') ) ,1,1,'') AS TitleFROM CTEWHERe CTE.RowNbr=1这将为您提供以下结果:
1 1 1 Tag1,Tag21 2 2 Tag2,Tag5,Tag9
因此,将来总是显示什么 表结构 及其 数据 。那会给你更好的答案



