SQLServer中的cross apply和FOR XML PATH

参考:

FOR XML PATH:http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html

cross apply:http://www.cnblogs.com/Leo_wl/archive/2013/04/02/2997012.html

应用:

FOR XML PATH,可以在group by 语句中,合并非group字段,例如:查询每个学生对应的课程(多个课程使用逗号隔开)

cross apply,可以查询A表的同时,查询B表的数据,然后合并输出,例如:查询每个消费者的最新两个订单。

时间: 2024-10-12 19:48:17

SQLServer中的cross apply和FOR XML PATH的相关文章

mysql下分组取关联表指定提示方法,类似于mssql中的cross apply

转至:https://stackoverflow.com/questions/12113699/get-top-n-records-for-each-group-of-grouped-results 通过分组的排序及序号获取条数信息,可以使用到索引,没测试性能,不知道和mssql的cross apply性能差异性为多少,只是能实现相应的效果. 1 #MySQL 5.7.12 2 #please drop objects you've created at the end of the scrip

XML 在SQLServer中的使用

SQL Server对于XML支持的核心在于XML数据的格式,这种数据类型可以将XML的数据存储于数据库的对象中,比如variables, columns, and parameters.当你用XML数据类型配置这些对象中的一个时,你指定类型的名字就像你在SQLServer 中指定一个类型一样. XML的数据类型确保了你的XML数据被完好的构建保存,同时也符合ISO的标准.在定义一个XML数据类型之前,我们首先要知道它的几种限制,如下: 一个实例的XML列不能包含超过2GB的数据. 一个XML的

使用For XML PATH 会影响Cross Apply 返回

昨天在写语句的时候,遇到了一个现象,其实就是使用 Cross Apply做一个拼接字符串的而已.比如 CREATE TABLE GoodsCatalog (ID INT, Name NVARCHAR(50)) CREATE TABLE Goods (ID INT, GoodsCatalogID INT, Name NVARCHAR(50)) INSERT INTO GoodsCatalog ( ID, Name ) VALUES ( 1,'水果'),( 2,'体育用品') INSERT INTO

sqlserver中对xml进行操作

1 --1.创建xml测试数据库表Xml_Table 2 use Fly_Test --测试数据库 3 go 4 5 create table Xml_Table(ID INT identity PRIMARY KEY, XmlData XML); 6 --2.插入测试数据 7 insert into Xml_Table(XmlData) values 8 ('<book id="0001"> 9 <title>SqlServer2005</title&g

SQL Server中CROSS APPLY和OUTER APPLY的应用详解

SQL Server数据库操作中,在2005以上的版本新增加了一个APPLY表运算符的功能.新增的APPLY表运算符把右表表达式应用到左表表达式中的每一行.它不像JOIN那样先计算那个表表达式都可以,APPLY必选先逻辑地计算左表达式.这种计算输入的逻辑顺序允许吧右表达式关联到左表表达式. APPLY有两种形式,一个是OUTER APPLY,一个是CROSS APPLY,区别在于指定OUTER,意味着结果集中将包含使右表表达式为空的左表表达式中的行,而指定CROSS,则相反,结果集中不包含使右表

SQLSERVER表连接(INNER JOIN,LEFT JOIN,RIGHT JOIN,FULL JOIN,CROSS JOIN,CROSS APPLY,OUTER APPLY)

1 常用表连接(inner join,left join,right join,full join,cross join) if object_id(N'table1',N'U') is not null drop table table1 if object_id(N'table2',N'U') is not null drop table table2 create table table1(id int,name varchar(20)) insert into table1 select

SqlServer 中 for xml path 相关

表结构: typename varchar(50) typedesc varchar(50) 示例 SQL 语句: SELECT '{"'+TypeName, '":"', TypeDesc + '"}',',' FROM dbo.SYS_DicEnumType FOR XML PATH('') 这样就可以得到一个比较接近 JSON 格式的字符串,如下: {"Gender":"性别"},{"Degree":

SQLSERVER CROSS APPLY 与 OUTER APPLY 的应用

日常开发中遇到多表查询时,首先会想到 INNER JOIN 或 LEFT OUTER JOIN 等等,但是这两种查询有时候不能满足需求.比如,左表一条关联右表多条记录时,我需要控制右表的某一条或多条记录跟左表匹配.貌似,INNER JOIN 或 LEFT OUTER JOIN 不能很好完成.但是 CROSS APPLY 与 OUTER APPLY 可以 有两张表:Student(学生表)和 Score(成绩表),数据如下 1)查询每个学生最近两次的考试成绩 SELECT T1.StudentNo

知方可补不足~sqlserver中对xml类型字段的操作

回到目录 在sqlserver中有很多种数据类型,而XML数据类型是比较新奇怪的一种格式,我们平常接触的可能比较少,用的也少,而在某些场合,使用XML类型可能会使我们的开发变简单,下面就是一种情况: 表test有字段Menu,它保存的信息可能有两种方式,对标准menu,扩展menu,自定义Menu等,而这些方式所需要的键/值是不同的,有些同学会说使用Json串来存储,这当然是一种很不错的方式,但是数据库并没有这种类型,所以在查询,聚合时非常困难,这些我们想到了xml格式,它是SQLSERVER的