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

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

sql server 2008中的apply運(yùn)算符使用方法

2024-08-31 01:00:43
字體:
供稿:網(wǎng)友

Apply運(yùn)算符可以實(shí)現(xiàn)兩個(gè)查詢結(jié)果的全組合結(jié)果,又稱為交叉集合。例如兩個(gè)數(shù)據(jù)組合(A,B)、(A,B),他們的交叉集合為(AA,AB,AA,AB)。

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

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

復(fù)制代碼 代碼如下:


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的外鍵

插入數(shù)據(jù),腳本如下

復(fù)制代碼 代碼如下:


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');


兩個(gè)表結(jié)構(gòu)建立完畢,數(shù)據(jù)也成功插入進(jìn)去了。為了便于講解在StudentList表中再插入一條記錄

復(fù)制代碼 代碼如下:


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


輸入以下語句

復(fù)制代碼 代碼如下:


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


結(jié)果如下

sql server 2008中的apply運(yùn)算符使用方法

再輸入以下語句

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

結(jié)果如下

sql server 2008中的apply運(yùn)算符使用方法

可以看出Cross Apply和Outer Apply的區(qū)別

Cross Apply把語句兩邊的兩個(gè)Select查詢結(jié)果進(jìn)行交叉配對,將所有結(jié)果展示出來。Cross Apply查詢確保在查詢兩個(gè)子集數(shù)據(jù)的交集時(shí),只有有效信息的集合才被列出來。

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 明星| 凌源市| 瑞安市| 五指山市| 株洲市| 新安县| 蒙自县| 山丹县| 乐清市| 许昌市| 阿巴嘎旗| 沾化县| 邵阳市| 鄄城县| 武清区| 重庆市| 夹江县| 巴彦淖尔市| 永丰县| 新营市| 民县| 义马市| 清镇市| 历史| 敖汉旗| 永城市| 化州市| 建水县| 汉寿县| 林口县| 舟山市| 桃园市| 泸定县| 武穴市| 乌兰浩特市| 镇原县| 靖边县| 朝阳市| 景泰县| 龙游县| 龙游县|