我在sql server数据库中的xml输出有问题。我的桌子:
CREATE TABLE [dbo].[test_table]( [id] [int] IDENTITY(1,1) NOT NULL, [firstname] [nvarchar](255) NULL, [lastname] [nvarchar](255) NULL, [city] [nvarchar](255) NULL, [street] [nvarchar](255) NULL, [streetno] [int] NULL )
我想要输出,其中Address嵌套在每个Person内,如下所示:
<Root> <Person id="1"> <firstname>Stefanie</firstname> <lastname>Buckley</lastname> <Address> <city>Oklahoma</city> <street> Cowley Road</street> <streetno>34</streetno> </Address> </Person> <Person id="2"> <firstname>Sandy</firstname> <lastname>Mc Gee</lastname> <Address> <city>Montgomery</city> <street> Hague Parkway</street> <streetno>27</streetno> </Address> </Person> </Root>
我已经尝试过嵌套选择:
select tbl1.id '@id', tbl1.firstname, tbl1.lastname, ( select city,street,streetno from test_table as tbl2 where tbl2.id = tbl1.id for xml path('Address') ) from test_table as tbl1 for xml path('Person'), Root('Root')
但是输出是这样的:
<Root> <Person id="1"> <firstname>Stefanie</firstname> <lastname>Buckley</lastname><Address><city>Oklahoma</city><street> Cowley Road</street><streetno>34</streetno></Address></Person> <Person id="2"> <firstname>Sandy</firstname> <lastname>Mc Gee</lastname><Address><city>Anchorage</city><street> North Green Clarendon Road</street><streetno>29</streetno></Address></Person> <Person id="3">
我做错了什么?
您忘记了, type,不需要从表中读取信息。
, type
select tbl1.id '@id' , tbl1.firstname , tbl1.lastname , ( select city , street , streetno for xml path('Address'), type ) from test_table as tbl1 for xml path('Person'), type, Root('Root')