位置: 编程技术 - 正文
要实现的SQL查询很原始:
要求从第一个表进行查询得到第二个表格式的数据,上网查询之后竟然能写出下面的SQL: 现将SQL进行一下分析: 总共使用到的点有:OUTER APPLY,FOR XML AUTO。由于对SQL Server没有很深的研究,所以记录一下 OUTER APPLY 是SQL开始支持的一种查询方法,类似于连接查询,是将两个查询结果进行拼接,但是奇特的是,使用OUTER APPLY竟然能够在Apply后面的查询中使用前面已经得到的查询结果。 如: 第一段SQL显然是错的,有两个原因:1.Cross Join本来就是无条件的,2. SQl Server会爆出如下错误: The multi-part identifier "A.username" could not be bound. 大家可能会说有条件的Join查询本来就不是这样写的,应该写为第二条SQL这样的样子,其实这样写和第三条SQL中使用Outer apply 实现的效果是一样的 可是 Outer Apply还能实现如下的效果 这个恐怕直接使用join就有点麻烦了,上面的例子也许没什么意义,其实SQL提出Apply连接方法主要是为了在连接查询中使用已经执行的查询语句的结果 除了“OUTER APPLY”,SQL Server还有CROSS APPLY,之间的区别主要是在Null值的处理上 FOR XML AUTO 主要用于将SQL的查询结果直接返回成XML语句,For Xml 除了auto外 还有RAW和EXPLICIT,详见《超级简单:使用FOR XML AUTO控制XML输出》 在文章刚开始提出的SQL文,就是使用了上面的两个特性,首先使用Outer Apply来实现类似于使用userpart进行分组的效果,来分别筛选出各个userpart中的user,然后由于筛选出的结果是多行,所以使用 for xml 来把多行数据拼接成xml,最后很二的对xml进行拆分.... 综上,感觉这种实现方式比较独特,又学习了SQL Server中的一些特性,和大家分享一下
推荐整理分享很有意思的SQL多行数据拼接(sql有什么),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:很有意思的sql多字符串,sql好,很有意思的sql多字符串,sql有多少种,sql有多少种,有趣的sql语句,很有意思的sql多字符串,很有意思的sql多字符串,内容如对您有帮助,希望把文章链接给更多的朋友!
SQL server使用自定义函数以及游标 编号标准宗地编码(landCode)所在区段编码(sectCode)BGGBGGBGGBGGBGG现在需要将表中的数据转换为如下表所示结
多表关联同时更新多条不同的记录方法分享 以下为测试例子。1.首先创建两张临时表并录入测试数据:createtable#temptest1(idint,name1varchar(),ageint)createtable#temptest2(idint,name1varchar(),ageint)查询出此时的
在数据库中自动生成编号的实现方法分享 在使用数据库的时候,难免要在使用过程中进行删除的操作,如果是使用int类型的字段,令其自增长,这是个最简单的办法,但是后果会有些不是你想要的!看
标签: sql有什么
本文链接地址:https://www.jiuchutong.com/biancheng/348886.html 转载请保留说明!友情链接: 武汉网站建设