2014-01-31 25 views
0

我必须使用xmlpath获取连接字符串的结果来更新表列。Sql:使用xmlPath获取连接字符串的行

对于为例,我必须做这样的事情

Update table c 
set c.languages = 
(SELECT '\r\n'+rl.Name AS [text()] 
    from ResourceLanguage as rl 
     where rl.resource_Id=c.resource_Id 
    FOR XML PATH ('')) 

我得到一个错误“附近有语法错误C”。

P.S:在我为例,该领域的语言是类型为nvarchar(最大)

有人可以帮助我吗? 感谢

+0

从'c.languages'和'c.resource_Id'中删除'c'。 –

+0

谢谢。但仍然无法工作。我有错误错误语法附近的关键字'从'(从第一个) – user1845394

回答

0

我找到了解决办法。 这是它:

DECLARE @tempTable TABLE 
(
    Id int, 
    Languages nvarchar(max) 
) 

INSERT @tempTable (Id, Languages) 
(
    select r1.resource_Id, Stuff((select', '+ rl.Name as [text()] 
     from ResourceLanguage as rl 
     where rl.resource_Id=c.resource_Id 
     for xml path(''), type).value('.', 'nvarchar(250)'), 1, 2, '') 
    from Resource r1 
) 

Update Resource 
Set Languages = temp.Languages 
    FROM @tempTable temp 
    where resource_Id=temp.resource_Id 
0

写这个方式 可帮助您

这是一个演示代码,这个你一定要试试这样:

UPDATE Table_1 

SET c = 

(

SELECT (SELECT 'White' AS Color1, 

'Blue' AS Color2, 

'Black' AS Color3, 

'Light' AS 'Color4/@Special', 

'Green' AS Color4, 

'Red' AS Color5 

FOR 

XML PATH('Colors'), 

TYPE 

), 

(SELECT 'Apple' AS Fruits1, 

'Pineapple' AS Fruits2, 

'Grapes' AS Fruits3, 

'Melon' AS Fruits4 

FOR 

XML PATH('Fruits'), 

TYPE 

) 
FOR XML PATH(''), 

ROOT('SampleXML')) 
+0

这是我写的!不起作用 – user1845394

+0

编辑我的答案检查 – pankeel