0

项目表

ID    item_id     item
------------------------
1     44          shoe 
2     44          boat
3     44          car
4     82          truck
5     82          shirt
6     82          tree
7     99          egg
8     99          carrot
9     99          penguin

所以我这样做:

SELECT item 
FROM items 
WHERE item_id = 82

我在不同的行上得到以下信息:

 truck
 shirt
 tree

是否有一个 SELECT 将返回一行中的所有项目,可能由一些分隔符分隔:

truck,shirt,tree

我知道如何做到这一点,但是有一个简单的选择来做同样的事情吗?

谢谢!

4

2 回答 2

4
SELECT
     [item_id],
     STUFF(
         (SELECT ',' + [item]
          FROM TableName
          WHERE [item_id] = a.[item_id] AND item_id = 82
          FOR XML PATH (''))
          , 1, 1, '')  AS NamesList
FROM TableName AS a
WHERE item_id = 82
GROUP BY [item_id]
于 2013-02-14T16:48:04.523 回答
0

您可以使用CROSS APPLYFOR XML PATH

SELECT distinct t1.item_id,
  LEFT(itemList , LEN(itemList)-1) itemList 
FROM items t1
CROSS APPLY
(
  SELECT t2.item + ', '
  FROM items t2
  where t1.item_id = t2.item_id
  FOR XML PATH('')
) m (itemList)
where t1.item_id = 82

请参阅带有演示的 SQL Fiddle

于 2013-02-14T16:48:18.923 回答