2012-05-08 15 views
4

我有下面的XML消息:加入從XML

DECLARE @XML AS XML 
SET @XML = 
'<Message> 
<Changes> 
    <Deleted> 
     <ROW id="1" name="Nicole" surname="Bartlett" city="denver" balance="779.4663" dateOfBirth="1991-12-11T14:05:42.830" maritalStatus="S" /> 
     <ROW id="1" name="Nicole" surname="Bartlett" city="boston" balance="779.4663" dateOfBirth="1991-12-11T14:05:42.830" maritalStatus="S" /> 
    </Deleted> 
    <Inserted> 
     <ROW id="1" name="Nicole" surname="Bartlett" city="denver" balance="779.4663" dateOfBirth="1991-12-11T14:05:42.830" maritalStatus="S" /> 
     <ROW id="1" name="Nicole" surname="Bartlett" city="boston" balance="779.4663" dateOfBirth="1991-12-11T14:05:42.830" maritalStatus="S" /> 
    </Inserted> 
</Changes> 
</Message>' 

,我需要從該消息中選擇數據,並加入另一個表上的id字段。以下代碼不起作用:

SELECT T.c.value('./@id', 'int') as id, t.c.value('./@name', 'varchar(max)') as name 
FROM @XML.nodes('/Message/Changes/Deleted/ROW') T(c) 
inner join other_table tbl 
    on tbl.id = id 

我該怎麼做?

回答

9
SELECT T.c.value('./@id', 'int') as id, t.c.value('./@name', 'varchar(max)') as name 
FROM @XML.nodes('/Message/Changes/Deleted/ROW') T(c) 
inner join other_table tbl 
    on tbl.id = T.c.value('./@id', 'int')