从包含由逗号分隔的多个值的另一行中选择表中的多行

时间:2019-03-21 20:01:04

标签: sql-server stored-procedures

我有一张表,其中包含标题和标签ID,称为TaggedTitles。我有第二个表,其中包含标签和TagID。 TaggedTitles表具有与每个标题关联的多个标签。例如:

TaggedTitles表:与标题“汽车”相关联的TagID列包含:1,5,7,表示“标签”表中的标签。在此示例中,1、5、7表示标签:车轮,油漆,地毯。我需要加入“标签”表以使用“汽车”作为参数返回车轮,油漆,地毯。

SELECT  
    Tags.TAGS
FROM 
    Tags
LEFT JOIN 
    TaggedTitles ON TaggedTitles.TAGID = Tags.TAGID
WHERE 
    TaggedTitles.TITLE = @Title

标题表

TAG_ID  TITLE       
-------------
  1     FRUIT       
  2     FRUIT       
  3     FRUIT       

标签表

TAG_ID  TAG     
----------------------
  1     ORANGES     
  2     APPLES      
  3     PEARS       

需要的结果:Oranges,Apples,Pears来自参数“水果”

1 个答案:

答案 0 :(得分:1)

尝试将XML PATH与STUFF语句组合在一起。

例如:

DECLARE @INFO TABLE (TAG_ID int, TITLE varchar(10)) 

INSERT @INFO VALUES (1,'ORANGES')
INSERT @INFO VALUES (2,'APPLES')
INSERT @INFO VALUES (3,'PEARS')

SELECT STUFF((
       SELECT ','+TITLE
       FROM @INFO
       FOR XML PATH('')
),1,1, '') AS FRUITS