网站建设的相应技术/aso具体优化

   日期:2024-12-27    作者:ira0v 浏览:74    移动:http://w.yusign.com/mobile/quote/7603.html

一、集合运算的基本格式是

集合查询1

集合查询2

[order by ...]

二、集合运算符是对两个集合操作的,两个集合必须具有相同的列数,列具有相同的数据类型(至少能隐式转换的),最终输出的集合的列名由第一个集合的列名来确定。(可以用来连接多个结果);集合运算对行进行比较时,认为两个NULL值相等。

三、union和union all(并集)集合运算

union(并集)集合运算可以将多个查询结果集合并成一个结果集。union(隐含distinct,去除重复)、union all。

--UNION合并两个查询结果集,并且将其中完全重复的数据行合并为一条

select tName,tSex fromteacherunion

select sName,sSex from student

--UNION ALL合并两个查询结果集,返回所有数据,不会去掉重复的数据

select tName,tSex fromteacherunion all

select sName,sSex from student

Union因为要进行重复值扫描,所以效率低,因此如果不是确定要合并重复行,那么就用UNION ALL

四、intersect(交集)集合运算:删除两个集合中的重复行,返回只有在两个集合中都出现的行

--先将其中完全重复的数据行删除,再对两个查询结果集取其交集

select tName,tSex fromteacherintersect

select sName,sSex from student

ANSI SQL 支持带有all选项的intersect集合运算,但SQL Server 2008现在还不支持all选项。要想查询交集中的所有数据的办法

with intersect_all as(select row_number() over(partition by tName,tSex order by (select 0)) asrowNum,

tName,tSexfromteacherintersect

select row_number() over(partition by sName,sSex order by (select 0)) asrowNum,

sName,sSexfromstudent

)select tName,tSex fromintersect_all--备注:在排序函数的over子句中使用order by (select )用这种方法可以告诉SQL Server不必在意行的顺序

五、except(差集)集合运算:先将其中完全重复的数据行删除,再返回只在第一个集合中出现,在第二个集合中不出现的所有行。

select tName,tSex fromteacherexcept

select sName,sSex from student

ANSI SQL 支持带有all选项的except集合运算,但SQL Server 2008现在还不支持all选项。要想查询交集中的所有数据的办法

with except_all as(select row_number() over(partition by tName,tSex order by (select 0)) asrowNum,

tName,tSexfromteacherexcept

select row_number() over(partition by sName,sSex order by (select 0)) asrowNum,

sName,sSexfromstudent

)select tName,tSex fromexcept_all--备注:在排序函数的over子句中使用order by (select )用这种方法可以告诉SQL Server不必在意行的顺序

本文地址:http://w.yusign.com/quote/7603.html    述古往 http://w.yusign.com/static/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关行情
推荐行情
点击排行
{
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号