是否可以一次选择多个表格?例如,我可以这样做:
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>
答案 0 :(得分:2)
union中的每个列只有一个列名,该列名取自第一个查询。您可以通过将其他表中的列设置为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>
答案 1 :(得分:0)
取决于您使用的SQL Server版本。像这样的堆栈如何溢出post?
答案 2 :(得分:0)
可以不列出表中的所有列,不必使用UNION,也不必使用以下方法重复列:
这将显示没有时髦重复列的所有数据,并且编码不需要很长时间。