SQL Server的outer apply使用範例

outer apply是SQL Server 2005後才提供的語法,可以用來取一個Subquery的最大值、最小值等單筆記錄,這種需求以前一般是用自訂函數來完成的。範例如下:

兩個資料表,主要資料表是作者 Authors,明細資料表是作品 Books,一個作者會有一到多個作品。下列是欄位定義:

create table Authors (
  AUTHOR varchar(50) not null primary key
);

create table Books (
  AUTHOR varchar(50) not null,
  TITLE varchar(200) not null,
  PUBLISH_DATE smalldatetime,
  primary key (AUTHOR, TITLE)
);

範例用金庸和古龍的幾本作品為例:

insert into AUTHORS values ('金庸');
insert into AUTHORS values ('古龍');

insert into BOOKS (AUTHOR, TITLE, PUBLISH_DATE) values ('金庸', '書劍恩仇錄', '1955-02-08');
insert into BOOKS (AUTHOR, TITLE, PUBLISH_DATE) values ('金庸', '碧血劍', '1956-01-01');
insert into BOOKS (AUTHOR, TITLE, PUBLISH_DATE) values ('金庸', '射鵰英雄傳', '1957-01-01');
insert into BOOKS (AUTHOR, TITLE, PUBLISH_DATE) values ('金庸', '雪山飛狐', '1959-02-09');
insert into BOOKS (AUTHOR, TITLE, PUBLISH_DATE) values ('金庸', '神鵰俠侶', '1959-05-20');

用left outer join會列出每名作者的所有作品記錄。

1

但我們的需求是找出每位作者最後刊載的作品,只要用outer apply就能輕鬆的找出。

2

##

您可能也會有興趣的類似文章

簡睿

服務於軟體業的資訊老兵。興趣廣泛,學習力佳,樂於分享所知所學。

您可能也會喜歡…

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *