亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

SQL Server 一些關鍵字詳解(一)

2024-08-31 00:54:03
字體:
來源:轉載
供稿:網友
SQL Server 一些關鍵字詳解(一)1.CROSSAPPLY和OUTERAPPLY

MSDN解釋如下(個人理解不是很清晰):

使用APPLY運算符可以為實現查詢操作的外部表表達式返回的每個行調用表值函數。表值函數作為右輸入,外部表表達式作為左輸入。通過對右輸入求值來獲得左輸入每一行的計算結果,生成的行被組合起來作為最終輸出。APPLY運算符生成的列的列表是左輸入中的列集,后跟右輸入返回的列的列表。

APPLY有兩種形式:CROSSAPPLY和OUTERAPPLY。CROSSAPPLY僅返回外部表中通過表值函數生成結果集的行。OUTERAPPLY既返回生成結果集的行,也返回不生成結果集的行,其中表值函數生成的列中的值為NULL。

網上搜集的解釋如下(個人感覺好理解):

SQLServer數據庫操作中,在2005以上的版本新增加了一個APPLY表運算符的功能。新增的APPLY表運算符把右表表達式應用到左表表達式中的每一行。它不像JOIN那樣先計算哪個表表達式都可以,APPLY必須先邏輯地計算左表達式。這種計算輸入的邏輯順序允許把右表達式關聯到左表表達式。

APPLY有兩種形式,一個是OUTERAPPLY,一個是CROSSAPPLY,區別在于指定OUTER,意味著結果集中將包含使右表表達式為空的左表表達式中的行,而指定CROSS,則相反,結果集中不包含使右表表達式為空的左表表達式中的行。

注意:若要使用APPLY,數據庫兼容級別必須為90。

下面我們做個例子:

比如有個類別表(Category)內容如下:

還有個類別明細表(CategoryDetail)內容如下:

下面我們來看看OUTERAPPLY的查詢結果:

1 SELECT  *2 FROM    dbo.Category a3         OUTER APPLY ( SELECT    *4                       FROM      dbo.CategoryDetail b5                       WHERE     b.CategoryId = a.Id6                     ) AS c ;

由上圖可看出OUTERAPPLY把左表中的信息查出后把右表中的信息也關聯出來了,當然當右表的信息為空(NULL)時,OUTERAPPLY也會在結果集中顯示出來.

接下來我們看下CROSSAPPLY的查詢結果:

1 SELECT  *2 FROM    dbo.Category a3         CROSS APPLY ( SELECT    *4                       FROM      dbo.CategoryDetail b5                       WHERE     b.CategoryId = a.Id6                     ) AS c ;

根據這圖和上面的比較可看出,這個返回結果只有兩個,Category表中的Tiger的信息沒有帶出來,因為在CategoryDetail表中沒有對應的明細.

由以上信息可得出,OUTERAPPLY就相當于數學中的并集,而CROSSAPPLY相當于數學中的交集,關于交集與并集的介紹如下:

并集為下圖中的所有紅色部分,即為A和B的全部:

交集為下圖中的紅色部分,也就是A和B相交的部分:

2.OUTERAPPLY和LEFTJOIN

LEFTJOIN關鍵字會從左表(Category)那里返回所有的行,即使在右表(CategoryDetail)中沒有匹配的行。

注釋:在某些數據庫中,LEFTJOIN稱為LEFTOUTERJOIN。

下面我們來看看LEFTJOIN的查詢結果(還是1.CROSSAPPLY和OUTERAPPLY中的例子):

1 SELECT  *2 FROM    dbo.Category a3         LEFT JOIN dbo.CategoryDetail b ON b.CategoryId = a.Id ;
View Code

LEFTJOIN關鍵字會從左表(Category)那里返回所有的行,即使在右表(CategoryDetail)中沒有匹配的行。效果和OUTERAPPLY一樣。

OUTERAPPLY和LEFTJOIN的主要區別為:

  一個LEFTJOIN關鍵字只能JOIN一個表,不能解決一個復雜的SELECT語句,或者函數方法等。

  一個OUTERAPPLY關鍵字可以包含一個獨立的復雜的SELECT語句,或者其他函數方法等。

OUTERAPPLY和LEFTJOIN性能的區別:

  據這博客LEFTJOIN和OUTERAPPLY性能比較的總結可知LEFTJOIN要比OUTERAPPLY性能要快。所以建議能用LEFTJOIN的盡量不要用OUTERAPPLY。

附注:

附Category表和CategoryDetail表的結果及插入數據的腳本:

 1 CREATE TABLE [dbo].[CategoryDetail]( 2     [Id] [int] IDENTITY(1,1) NOT NULL, 3     [CategoryId] [int] NULL, 4     [Cry] [varchar](50) NULL, 5  CONSTRAINT [PK_CategoryDetail] PRIMARY KEY CLUSTERED  6 ( 7     [Id] ASC 8 )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY] 9 ) ON [PRIMARY]10 GO11 SET ANSI_PADDING OFF12 GO13 SET IDENTITY_INSERT [dbo].[CategoryDetail] ON14 INSERT [dbo].[CategoryDetail] ([Id], [CategoryId], [Cry]) VALUES (1, 1, N'喵')15 INSERT [dbo].[CategoryDetail] ([Id], [CategoryId], [Cry]) VALUES (2, 2, N'汪')16 SET IDENTITY_INSERT [dbo].[CategoryDetail] OFF17 /****** Object:  Table [dbo].[Category]    Script Date: 08/17/2015 18:24:03 ******/18 SET ANSI_NULLS ON19 GO20 SET QUOTED_IDENTIFIER ON21 GO22 SET ANSI_PADDING ON23 GO24 CREATE TABLE [dbo].[Category](25     [Id] [int] IDENTITY(1,1) NOT NULL,26     [Name] [varchar](50) NULL,27  CONSTRAINT [PK_Category] PRIMARY KEY CLUSTERED 28 (29     [Id] ASC30 )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]31 ) ON [PRIMARY]32 GO33 SET ANSI_PADDING OFF34 GO35 SET IDENTITY_INSERT [dbo].[Category] ON36 INSERT [dbo].[Category] ([Id], [Name]) VALUES (1, N'Cat')37 INSERT [dbo].[Category] ([Id], [Name]) VALUES (2, N'Dog')38 INSERT [dbo].[Category] ([Id], [Name]) VALUES (3, N'Tiger')39 SET IDENTITY_INSERT [dbo].[Category] OFF
View Code


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲视频欧美视频| 一区二区三区四区在线观看视频| 欧美影院成年免费版| 久久精品男人天堂| 超碰91人人草人人干| 亚洲码在线观看| 精品国产乱码久久久久久婷婷| 色无极亚洲影院| 亚洲国产精品99| 亚洲成色777777女色窝| 91av在线播放视频| 欧美日韩综合视频| 国产在线不卡精品| 色综合亚洲精品激情狠狠| 成人网在线免费看| 国产伊人精品在线| 国产美女直播视频一区| 91九色综合久久| 亚洲欧洲第一视频| 中文字幕日韩欧美| 精品久久中文字幕久久av| 伊人久久久久久久久久久久久| 亚洲精品国产美女| 欧美一级大片视频| 美女国内精品自产拍在线播放| 麻豆国产va免费精品高清在线| 精品久久久久久久大神国产| 久久久久久久国产精品| 欧美激情第一页xxx| 国产亚洲精品美女久久久久| 日产精品99久久久久久| 亚洲欧美日本另类| 亚洲成成品网站| 成人久久18免费网站图片| 精品久久久久久久久久久久久| 亚洲国产精品电影| 国产精品久久久久7777婷婷| 亚洲一区二区三区成人在线视频精品| 成人免费激情视频| 精品久久久久久国产91| 欧美日韩999| 性色av香蕉一区二区| 亚洲日本欧美日韩高观看| 夜夜狂射影院欧美极品| 国产99在线|中文| 国产精品精品视频一区二区三区| 九九精品在线视频| 亚洲欧美国产精品va在线观看| 国产精品精品久久久久久| 欧美激情中文字幕乱码免费| 亚洲精品乱码久久久久久按摩观| 国产日韩在线亚洲字幕中文| 欧美日本精品在线| 精品国产91久久久| 久久久久久九九九| 国产精品美女www| 日韩精品有码在线观看| 日韩高清av一区二区三区| 国产偷国产偷亚洲清高网站| 狠狠色狠狠色综合日日小说| 91久久久久久久久| 久久午夜a级毛片| 神马久久久久久| 91精品国产九九九久久久亚洲| 亚洲免费电影一区| 欧美日韩在线免费观看| 一区二区欧美亚洲| 久久天天躁日日躁| 在线视频欧美日韩| 亚洲国产精品视频在线观看| 精品福利在线看| 欧美三级欧美成人高清www| 亚洲区免费影片| 一区二区三区回区在观看免费视频| 正在播放国产一区| 久久视频在线观看免费| 亚洲桃花岛网站| 国自产精品手机在线观看视频| 日韩av中文字幕在线| 日韩欧美中文字幕在线播放| 亚洲国产成人精品久久| 国模视频一区二区三区| 欧美激情成人在线视频| 国产亚洲一区二区在线| 久久久久国产精品免费| 国产精品自产拍在线观看| 欧美激情综合色综合啪啪五月| 久色乳综合思思在线视频| 亚洲欧美精品中文字幕在线| 欧美黑人一区二区三区| 久久久国产成人精品| 亚洲欧美另类人妖| 久久久噜噜噜久久中文字免| 国产v综合ⅴ日韩v欧美大片| 亚洲国产日韩精品在线| 日韩av免费在线观看| 精品国产91乱高清在线观看| 日韩视频亚洲视频| 久久久久中文字幕2018| 91久久国产综合久久91精品网站| 久久99青青精品免费观看| 久久精品视频亚洲| 奇米4444一区二区三区| 亚洲字幕在线观看| 久久久精品免费视频| 国产网站欧美日韩免费精品在线观看| 国产精品夜色7777狼人| 欧美电影免费看| 欧美在线精品免播放器视频| 国产成人精品免费视频| 日本高清久久天堂| 国产精品观看在线亚洲人成网| 久久久在线视频| 超碰97人人做人人爱少妇| 国产视频精品免费播放| 色哟哟网站入口亚洲精品| 亚洲国产91精品在线观看| 国产精品99久久久久久白浆小说| 国产精品稀缺呦系列在线| 国产丝袜一区视频在线观看| 91在线观看免费网站| 国产精品久久久久久中文字| 2021久久精品国产99国产精品| 成人av.网址在线网站| 97视频在线观看视频免费视频| 亚洲成色777777女色窝| 九九热精品视频国产| 日韩视频第一页| 精品久久久久久久久久久久久| 中文字幕欧美在线| 国产精品丝袜白浆摸在线| 91精品啪aⅴ在线观看国产| 高清欧美性猛交| 91免费国产视频| 欧洲中文字幕国产精品| 免费91麻豆精品国产自产在线观看| 亚洲男女自偷自拍图片另类| 欧美成人剧情片在线观看| 亚洲女人被黑人巨大进入| 最近2019中文字幕大全第二页| 精品中文字幕在线2019| 亚洲欧美日韩国产精品| 国产美女久久精品| 欧美日韩国产色视频| 欧美性猛交xxxx久久久| 久久久在线免费观看| 日韩在线观看网站| 日韩久久精品成人| 日韩成人av在线播放| 亚洲精品女av网站| 欧美日韩在线另类| 国产精品jizz在线观看麻豆| 欧美丰满片xxx777| 欧美成人中文字幕| 国产主播喷水一区二区| 欧美日韩美女在线观看| 日韩激情片免费| 91精品视频在线| 久久久之久亚州精品露出| 亚洲成年网站在线观看| 国产午夜精品理论片a级探花| 亚洲护士老师的毛茸茸最新章节| 一区二区三区动漫| 久久亚洲私人国产精品va|