我有parent
/ child
关系的以下示例表结构。
parent
表
id LongText
--------------
10
20
child
表
id char value
--------------------
10 COLOR RED
10 HEIGHT 1FT
20 COLOR BLUE
20 WIDTH 2FT
我有一个要求,它指定子表行中的某些字段需要连接在一起并放在父表中。我想在单个SQL查询中完成此操作(如果可能)。我写的更新声明如下。
UPDATE
parent
SET
LongText = COALESCE(LongText, N'')
+ child.char + N': ' + child.val + ','
FROM
parent INNER JOIN child
ON
parent.id = child.id
但我只得到以下结果。
id LongText
------------------
10 COLOR: RED,
20 COLOR: BLUE,
我希望(或者我应该说我想要)才能得到这个。
id LongText
------------------
10 COLOR: RED,HEIGHT: 1FT
20 COLOR: BLUE,WIDTH: 2FT
这可能吗?有关如何做到这一点的任何建议?任何帮助表示赞赏!
以下是SQLfiddle供参考。
答案 0 :(得分:4)
update parent
set longtext =
stuff((
select ',' + c.char + ': ' + c.val
from child c
where c.uid = parent.uid
for xml path(''), type).value('.','nvarchar(max)'),1,1,'');
我已使用解决方案更新了您的SQLFiddle。