SQL Server2005提供了一個新查詢語法——For XML PATH(''),這個語法有什麼用呢?想象一下這樣一個查詢需求:有兩個表,班級表A、學生表B,要查詢一個班級裏有哪些學生?針對這個需求,方法有很多。舉例一下兩種:1、Join連接;2、For XML PATH('').
爲了大家方便體驗效果,附上創建數據庫的代碼:
--班級表 create table T_Class ( CNo int primary key not null identity,--班級編號 CName nvarchar(50) not null --班級名稱 ) go --學生表 create table T_Student ( SNo int primary key not null identity,--學生編號 Name nvarchar(50) not null , --學生姓名 CNo int not null --所屬班級 ) go
查詢語句的寫法:
SELECT CNo, CName, (SELECT Name+',' FROM dbo.T_Student s WHERE s.CNo=c.CNo For XML Path('')) AS Student --單獨一列 ,所有學生在同一列中 FROM T_Class c
運行效果:
應用實例
SELECT produceOrderCode, STUFF((SELECT ',' + processName FROM dbo.ws_CraftRouteDetail LEFT JOIN dbo.Process ON dbo.ws_CraftRouteDetail.processCode = dbo.Process.processCode WHERE dbo.ws_ProduceOrder.produceOrderCode=dbo.ws_CraftRouteDetail.produceOrderCode FOR XML PATH('')),1,1,'') AS processNameRemark FROM dbo.ws_ProduceOrder