FOR XML PATH(''):將查詢結果集以XML形式展現。
1、select top 1 opr_id,user_id from dbo.tracking_log FOR XML PATH('oprs')
返回結果xml:
<oprs>
<opr_id>100</opr_id>
<user_id>Natalie813</user_id>
</oprs>
字段名就是xml的節點名,可以 AS 別名。PATH括號中的是根節點名。
2、select '['+opr_id+']' from dbo.tracking_log where user_id = 'Natalie813' FOR XML PATH('')
返回結果:[100][2][4][56]
3、select distinct t1.user_id,
(select t2.opr_id+',' from dbo.tracking_log as t2 where t2.user_id = t1.user_id FOR XML PATH('')) as opr
from dbo.tracking_log as t1
-- where t1.user_id = 'Natalie813'
group by t1.user_id
結果:
列名:user_id opr
Natalie813 100,2,4,56,
4、優化步驟3的sql,去掉最後一個逗號
select user_id,LEFT(opr,LEN(opr)-1) from
(
select distinct t1.user_id,
(select t2.opr_id+',' from dbo.tracking_log as t2 where t2.user_id = t1.user_id FOR XML PATH('')) as opr
from dbo.tracking_log as t1
where t1.user_id = 'Natalie813'
group by t1.user_id
) a