![](/img/trans.png)
[英]Writing multiple SQL server tables as separate nodes to XML Document
[英]SQL Server “for xml”, multiple tables, multiple nodes
是否可以一次選擇多個表? 例如,我可以這樣做:
SELECT (
SELECT * FROM Articles
FOR XML PATH('article'), TYPE
)
FOR XML PATH('articles'), ROOT('data')
和
SELECT (
SELECT * FROM ArticleTypes
FOR XML PATH('articleType'), TYPE
)
FOR XML PATH('articleTypes'), ROOT('data')
我可以同時加入兩者,以獲得以下輸出嗎? 我不能使用UNION,因為表結構不匹配。
<data>
<articles>
<article>...</article>
...
</articles>
<articleTypes>
<articleType>...</articleType>
...
</articleTypes>
</data>
聯合中的每一列只有一個列名,並且該列名取自第一個查詢。 您可以通過將另一個表中的列設置為null
,而不是忽略它們。
select *
from (
select
1 as 'Articles/Id'
, 'Name' as 'Articles/Name'
, null as 'ArticleType/Id'
, null as 'ArticleType/Type'
) Articles
union all
select *
from (
select
null as 'Articles/Id'
, null as 'Articles/Name'
, 1 as 'ArticleType/Id'
, 'Type' as 'ArticleType/Type'
) ArticleType
FOR XML PATH(''), ROOT('data')
這導致:
<data>
<Articles>
<Id>1</Id>
<Name>Name</Name>
</Articles>
<ArticleType>
<Id>1</Id>
<Type>Type</Type>
</ArticleType>
</data>
根據您使用的SQL Server版本。 這樣的堆棧溢出帖子怎么樣?
使用以下方法可以不列出表中的所有列,不必使用UNION,也不必重復列:
這將顯示所有數據,而無需重復顯示時髦的列,並且無需花費很長時間進行編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.