根据联结表的结果更新列

时间:2013-07-08 14:40:59

标签: sql sql-server

可能重复:Concatenate row values T-SQL

我有三张桌子。项目,组织和Items_Organizations联结表,它提供了另外两个之间的多对多关系。

项目表包括“组织”列,我希望存储从每个项目的联结表中收到的值;将每个组织与逗号或类似组合在一起。

据我所知,在列中存储多个值并不是最佳做法,但是我需要通过一些处理程序& amp;显示每个项目的组织。没有比在一列中存储多个值更好的想法。

所以我在后端尝试做的是使用类似的东西更新'组织'列信息;

接收特定项目的组织:

SELECT OrganizationName FROM organizations
JOIN organizations ON organizations.organizationID =
Items_Organizations.organizationID 
WHERE Items_Organizations.item_ID = '1'

尝试使用UPDATE

使用上述查询的结果表更新列'组织'
UPDATE items SET organizations = ?

制定问题非常困难。我希望我已经说清楚了。

1 个答案:

答案 0 :(得分:0)

试试这个:

UPDATE i
SET i.organizations = 
  STUFF((
    SELECT ', ' + o.OrganizationName
    FROM Items_Organizations AS io
    INNER JOIN organizations AS o  ON o.organizationID = io.organizationID
    WHERE io.Item_Id = i.Item_Id AND io.Item_Id = 1
    FOR XML PATH(''))
  ,1,2,'')
FROM items AS i
WHERE i.Item_id = 1;

请在此处查看: