应用操作符可以实现两个查询结果的所有组合结果,也称为交叉集,例如,两个数据组合(a,b),(a,b),它们的交叉集是(aa,AB,aa,AB)。

应用分为交叉应用和外部应用两种方式,具体分析如下:

首先,两个表,studentlist和scoreinfo,设置脚本语言如下:
复制代码代码如下所示:
创建表studentlist(
id int(1,1)不是null,
姓名nvarchar(20)不为空,
性位不为空,
生日日期不为空,
nvarchar(2)非空类,
nvarchar(2)不为空的等级,
注册日期日期不为空,
主键(id);

创建表scoreinfo(
id int(1,1)不是null主键,
有没有空的int,
classid INT NOT NULL,
积分不为空,
testdate日期不为空,
注册日期日期不为空);

ScoreInfo是有身份的studentlist外键

插入数据,脚本如下所示
复制代码代码如下所示:
插入studentlist(姓名,性别,生日,班级,年级,注册日期)值('zhang三',1,1, 8,'2010-05-05 '1988-05-28 ',');

插入studentlist(姓名,性别,生日,班级,年级,注册日期)值(李四,1,4, 4,'2010-05-05 '1985-09-13 ',');

插入studentlist(姓名,性别,生日,班级,年级,注册日期)的价值观(李,0,'1987-11-05 ',1, 7,'2010-05-05);

插入scoreinfo(有,ClassID,得分,testdate,注册日期)值(1, 1, 98,'2010-04-15 ','2010-05-01);

插入scoreinfo(有,ClassID,得分,testdate,注册日期)值(1, 2, 92,'2010-04-15 ','2010-05-01);

插入scoreinfo(有,ClassID,得分,testdate,注册日期)值(1, 3, 86,'2010-04-15 ','2010-05-01);

插入scoreinfo(有,ClassID,得分,testdate,注册日期)值(2, 1, 95,'2010-04-15 ','2010-05-01);

插入scoreinfo(有,ClassID,得分,testdate,注册日期)值(2, 2, 94,'2010-04-15 ','2010-05-01);

插入scoreinfo(有,ClassID,得分,testdate,注册日期)值(2, 3, 91,'2010-04-15 ','2010-05-01);

插入scoreinfo(有,ClassID,得分,testdate,注册日期)值(3, 1, 90,'2010-04-15 ','2010-05-01);

插入scoreinfo(有,ClassID,得分,testdate,注册日期)值(3, 2, 88,'2010-04-15 ','2010-05-01);

插入scoreinfo(有,ClassID,得分,testdate,注册日期)值(3, 3, 90,'2010-04-15 ','2010-05-01);

两表结构建立和数据成功插入,便于在studentlist表插入记录的解释
复制代码代码如下所示:
插入studentlist(姓名,性别,生日,班级,年级,注册日期)
价值观(李明,1,2, 7,'2010-05-05 '1989-05-04 ',');

输入以下语句
复制代码代码如下所示:
SELECT * FROM studentlist一
交叉应用
(选择ClassID,得分从scoreinfo哪里有=张)B;

给出如下结果



再次输入以下语句

SELECT * FROM studentlist一
外部的应用
(选择ClassID,得分从scoreinfo哪里有=张)B;

给出如下结果



我们可以看到交叉应用和外部应用之间的区别。

交叉应用将语句的两个选择查询的结果交叉,并显示所有结果。交叉应用查询确保只有两个查询子集的数据交叉时才列出有效信息的集合。

的outerapply查询是一个列表的两个亚群的所有组合。不管数据是否交叉,所有要配对的数据都显示出来。