国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

sql server 2008中的apply運算符使用方法

2024-08-31 00:47:34
字體:
來源:轉載
供稿:網友

Apply運算符可以實現兩個查詢結果的全組合結果,又稱為交叉集合。例如兩個數據組合(A,B)、(A,B),他們的交叉集合為(AA,AB,AA,AB)。

Apply分為Cross Apply和Outer Apply兩種使用方式。具體分析如下:

首先先建立兩個表StudentList和ScoreInfo。腳本語言如下:

復制代碼 代碼如下:www.CuoXIn.com

create table StudentList(
id int Identity(1,1) not null,
Name nvarchar(20) not null,
Sex bit not null,
Birthday date not null,
Class nvarchar(2) not null,
Grade nvarchar(2) not null,
regdate date not null,
Primary key (id));

create table ScoreInfo(
id int Identity(1,1) not null primary key,
StudentID int not null,
ClassID int not null,
Score int not null,
TestDate date not null,
regdate date not null);


其中ScoreInfo中的StudentID為StudentList中id的外鍵

插入數據,腳本如下

復制代碼 代碼如下:www.CuoXIn.com

insert into StudentList(Name, Sex, Birthday, Class, Grade, regdate) values('張三', 1, '1988-05-28', 1, 8, '2010-05-05');

insert into StudentList(Name, Sex, Birthday, Class, Grade, regdate) values('李四', 1, '1985-09-13', 4, 4, '2010-05-05');

insert into StudentList(Name, Sex, Birthday, Class, Grade, regdate) values('王麗', 0, '1987-11-05', 1, 7, '2010-05-05');

insert into ScoreInfo(StudentID, ClassID, Score, TestDate, regdate) values(1, 1, 98, '2010-04-15', '2010-05-01');

insert into ScoreInfo(StudentID, ClassID, Score, TestDate, regdate) values(1, 2, 92, '2010-04-15', '2010-05-01');

insert into ScoreInfo(StudentID, ClassID, Score, TestDate, regdate) values(1, 3, 86, '2010-04-15', '2010-05-01');

insert into ScoreInfo(StudentID, ClassID, Score, TestDate, regdate) values(2, 1, 95, '2010-04-15', '2010-05-01');

insert into ScoreInfo(StudentID, ClassID, Score, TestDate, regdate) values(2, 2, 94, '2010-04-15', '2010-05-01');

insert into ScoreInfo(StudentID, ClassID, Score, TestDate, regdate) values(2, 3, 91, '2010-04-15', '2010-05-01');

insert into ScoreInfo(StudentID, ClassID, Score, TestDate, regdate) values(3, 1, 90, '2010-04-15', '2010-05-01');

insert into ScoreInfo(StudentID, ClassID, Score, TestDate, regdate) values(3, 2, 88, '2010-04-15', '2010-05-01');

insert into ScoreInfo(StudentID, ClassID, Score, TestDate, regdate) values(3, 3, 90, '2010-04-15', '2010-05-01');


兩個表結構建立完畢,數據也成功插入進去了。為了便于講解在StudentList表中再插入一條記錄
復制代碼 代碼如下:www.CuoXIn.com

insert into StudentList(Name, Sex, Birthday, Class, Grade, regdate)
values('李銘', 1, '1989-05-04', 2, 7, '2010-05-05');

輸入以下語句
復制代碼 代碼如下:www.CuoXIn.com

select * from StudentList a
cross apply
(select ClassID, Score from ScoreInfo where StudentID=a.id) b;

結果如下

再輸入以下語句

select * from StudentList a
outer apply
(select ClassID, Score from ScoreInfo where StudentID=a.id) b;

結果如下

可以看出Cross Apply和Outer Apply的區別

Cross Apply把語句兩邊的兩個Select查詢結果進行交叉配對,將所有結果展示出來。Cross Apply查詢確保在查詢兩個子集數據的交集時,只有有效信息的集合才被列出來。

OuterApply查詢是把兩個子集的所有組合列了出來,不管數據是否有交叉,全部顯示要配對的數據。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江源县| 白水县| 年辖:市辖区| 丰原市| 顺义区| 宣武区| 古丈县| 高邮市| 肥乡县| 鹤峰县| 加查县| 连山| 锡林浩特市| 平塘县| 松溪县| 临沭县| 平塘县| 玉山县| 吴江市| 怀安县| 玛曲县| 南江县| 万年县| 乐昌市| 衡水市| 宜章县| 四子王旗| 城固县| 绍兴县| 桃源县| 白河县| 犍为县| 阳高县| 永清县| 福泉市| 洛宁县| 宁强县| 台湾省| 江山市| 灯塔市| 隆化县|