1
당신은 SQL Server 2005에서이 스크립트를 실행하는 경우 :삭제 여러 노드
id data
1 <a id="1" /><a id="2" /><a id="3" /><a id="4" />
id data
1 <a id="2" /><a id="3" /><a id="4" />
나는이 세 가지를 모두 삭제 기대 :
create table #xmltemp
(
id int,
data xml null
)
insert into #xmltemp
select 1, ''
update #xmltemp
set data.modify('insert <a id="1" /> into /')
update #xmltemp
set data.modify('insert <a id="2" /> into /')
update #xmltemp
set data.modify('insert <a id="3" /> into /')
update #xmltemp
set data.modify('insert <a id="4" /> into /')
select * from #xmltemp
update x
set data.modify('delete //a[@id=sql:column("t.xmlid")]')
from #xmltemp x
inner join (
select 1 as id, 1 as xmlid union
select 1 as id, 2 as xmlid union
select 1 as id, 3 as xmlid
) t on t.id = x.id
select * from #xmltemp
drop table #xmltemp
당신은 다음과 같은 출력을 얻을 것이다
id data
1 <a id="4" />
여러 고개를 끄덕을 삭제하는 방법이 있나요 : 오히려 이끌어 냈습니다 첫 번째 선택 반환 이상의 노드 es 하나의 쿼리? 특히, 다른 테이블의 열에서 조건과 일치하는 모든 노드를 삭제하려고합니다 (이 예제에서는 즉석에서 생성되지만 실제로는 실제 테이블이었을 수도 있음).
감사합니다. 방금 서브 쿼리에서 "for xml explicit"을 사용하여 xml을 다시 작성했습니다. – tloflin