SQLServer中交叉聯接的用法介紹

目錄

1、交叉聯接(cross join)的概念

2、交叉聯接的語法格式

3、交叉查詢的使用場景

3.1 交叉聯接可以查詢全部數據

3.2 交叉聯接優化查詢性能

4、總結


今天給大家介紹SQLServer中交叉聯接的用法,希望對大家能有所幫助!

1、交叉聯接(cross join)的概念

交叉聯接是聯接查詢的第一個階段,它對兩個數據表進行笛卡爾積。即第一張數據表每一行與第二張表的所有行進行聯接,生成結果集的大小等于T1*T2。

select * from t1 cross join t2

2、交叉聯接的語法格式

? ? ? ?? ? ?

select * from t1 cross join t2;--常用寫法select * from t1, t2;-- SQL:1989的規范select * from t1 cross join t2where t1.col1=t2.col2;--等價于內部聯接select * from t1 inner join t2  on t1.col1=t2.col2

3、交叉查詢的使用場景

3.1 交叉聯接可以查詢全部數據

-- 示例

-- 員工表
CREATE TABLE [dbo].[EmpInfo]([empId] [int] IDENTITY(1,1) NOT NULL,[empNo] [varchar](20) NULL,[empName] [nvarchar](20) NULL,CONSTRAINT [PK_EmpInfo] PRIMARY KEY CLUSTERED 
([empId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF
, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]-- 獎金表
CREATE TABLE [dbo].[SalaryInfo]([id] [int] IDENTITY(1,1) NOT NULL,[empId] [int] NULL,[salary] [decimal](18, 2) NULL,[seasons] [varchar](20) NULL,CONSTRAINT [PK_SalaryInfo] PRIMARY KEY CLUSTERED 
([id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF
, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
-- 季度表
CREATE TABLE [dbo].[Seasons]([name] [nchar](10) NULL
) ON [PRIMARY]GO
SET IDENTITY_INSERT [dbo].[EmpInfo] ON INSERT [dbo].[EmpInfo] ([empId], [empNo], [empName]) VALUES (1, N'A001', N'王強')
INSERT [dbo].[EmpInfo] ([empId], [empNo], [empName]) VALUES (2, N'A002', N'李明')
INSERT [dbo].[EmpInfo] ([empId], [empNo], [empName]) VALUES (3, N'A003', N'張三')INSERT [dbo].[SalaryInfo] ([id], [empId], [salary], [seasons])VALUES (1, 1, CAST(3000.00 AS Decimal(18, 2)), N'第一季度')
INSERT [dbo].[SalaryInfo] ([id], [empId], [salary], [seasons])VALUES (2, 3, CAST(5000.00 AS Decimal(18, 2)), N'第一季度')
INSERT [dbo].[SalaryInfo] ([id], [empId], [salary], [seasons])VALUES (3, 1, CAST(3500.00 AS Decimal(18, 2)), N'第二季度')
INSERT [dbo].[SalaryInfo] ([id], [empId], [salary], [seasons])VALUES (4, 3, CAST(3000.00 AS Decimal(18, 2)), N'第二季度 ')
INSERT [dbo].[SalaryInfo] ([id], [empId], [salary], [seasons])VALUES (5, 2, CAST(4500.00 AS Decimal(18, 2)), N'第二季度')INSERT [dbo].[Seasons] ([name]) VALUES (N'第一季度')
INSERT [dbo].[Seasons] ([name]) VALUES (N'第二季度')
INSERT [dbo].[Seasons] ([name]) VALUES (N'第三季度')
INSERT [dbo].[Seasons] ([name]) VALUES (N'第四季度')-- 查詢每個人每個季度的獎金情況 如果獎金不存在則為0
SELECT a.empName,b.name seasons ,isnull(c.salary,0) salary 
FROM EmpInfo a 
CROSS JOIN Seasons b
LEFT OUTER JOIN SalaryInfo c ON a.empId=c.empId AND b.name=c.seasons

3.2 交叉聯接優化查詢性能

針對一些情況可以采用交叉聯接的方式替代子查詢,通過減少子查詢造成的多次表掃描,從而可以提高優化查詢的性能。

4、總結

交叉聯接雖然支持使用WHERE子句篩選行,由于笛卡兒積占用的資源可能會很多,如果不是真正需要笛卡兒積的情況下,則應當避免地使用CROSS JOIN。建議使用INNER JOIN代替,效率會更高一些。如果需要為所有的可能性都返回數據聯接查詢可能會非常實用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270760.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270760.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270760.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機有關的文獻檢索題目,文獻檢索第二次計算機檢索實習題目(2016.4.10).doc

文檔介紹:第二次計算機檢索實****題目本次實****目的是使學生對以下三個外文數據庫:PENDEX數據庫、荷蘭SDOS數據庫、德國Springer數據庫的使用方法有所了解。通過題目,使學生分別掌握每個數據庫所提供的各種獲取文獻的方法,包括瀏覽和檢索的方法,并通過各種算符的組…

spring中的IOC和AOP

IOC IOC(Inversion Of Controll,控制反轉)是一種設計思想,將原本在程序中手動創建對象的控制權,交由給Spring框架來管理。IOC容器是Spring用來實現IOC的載體,IOC容器實際上就是一個Map(key, value)&#x…

HDU1598【最小生成樹拓展】

參考自 http://www.cnblogs.com/nanke/archive/2012/02/13/2350008.html PS: 沒想到最小生成樹的kruskal算法從小到大枚舉邊,然后MAX-MIN就保證了最小。 不過居然沒想到這個方案,就是二分枚舉差值,然后跑最短路; 轉載于:https://w…

python圖表可視化工具_比Excel制圖更強大,Python可視化工具Altair入門教程

原作者 Parul Pandey曉查 編譯整理量子位 出品 | 公眾號 QbitAI數據轉化成更直觀的圖片,對于理解數據背后的真相很有幫助。如果你有這方面的需求,而且還在使用Python,那么強烈推薦你試一試Altair。Altair是一個專為Python編寫的可視化軟件包&…

后端技術:SpringBoot配置熱加載工具(devtools)筆記

今天給大家介紹IDEA開發工具如何配置devtools熱加載工具。1、devtools原理介紹spring-boot-devtools是spring為開發者提供的熱加載工具包。主要原理是使用了兩個ClassLoader類加載器,一個Classloader加載那些不會改變的類(第三方Jar包)&#…

關于ios手機上傳圖片旋轉問題的解決

先占個坑,一會完善!! 轉載于:https://www.cnblogs.com/zhuyu/articles/5943400.html

服務器不能創建對象教務系統,[轉]解決強智教務系統非IE下無法創建對象錯誤...

最近要弄教務網的模擬登陸,但苦于教務網只兼容IE8以下的瀏覽器,不能用chrome強大的F12抓包就很煩,然后發現Fly俊大佬弄了一個相當強的插件啊。但是怕Fly俊大佬的博客失效,所以私自留了個檔。侵刪啊大佬~以下內容均為轉載學校教務系…

Java8對List<Integer>的求和

一般都是對對象對某個字段求和&#xff0c;對List<Object>中Object中的某個字段進行求和&#xff0c;就像這樣&#xff1a; 如果想要用流對List<Integer>進行求和&#xff0c;如下 long sum receiveTotalPriceList.stream().reduce(Integer::sum).orElse(0);

安裝python無法啟動_終端里為什么無法運行python?

1、首先確認自己電腦是否安裝了python&#xff0c;如果不確定可以在終端直接輸入python&#xff0c;出現以下界面說明已經正確安裝&#xff1a;2、如果已經安裝了python&#xff0c;但是在終端還是顯示未安裝&#xff0c;很有可能是沒有配置環境變量。環境變量的配置步驟如下&a…

電腦軟件:主流的壓縮軟件對比,看完你就會選擇了

目錄 1、WinRAR 2、360壓縮 3、7-ZIP 4、Bandizip 5、好壓/快壓 今天小編給大家介紹一下主流的壓縮軟件&#xff0c;看完你就會選擇了&#xff01; 目前主流的壓縮軟件主要有WinRAR、360壓縮、7-ZIP、Bandzip、好壓。現在給大家逐個介紹一下&#xff0c;每款壓縮軟件的特。 1、…

怎么測試ajax get請求,為什么我的AJAX在運行測試時請求dev中的PUT請求,但請求了GET請求?...

在我的Rails應用程序中&#xff0c;我制作了一個AJAX PUT請求(使用Coffeescript)&#xff0c;該請求在我的開發環境中正常工作。當我檢查按鈕&#xff0c;點擊后&#xff0c;會觸發使用Firefox的AJAX請求時&#xff0c;它看起來是這樣的&#xff1a;為什么我的AJAX在運行測試時…

控制DIV內容滾動的方法,實現不用拖滾動條就可以看到最新消息

三種控制DIV內容滾動的方法&#xff1a; 本人qq群也有許多的技術文檔&#xff0c;希望可以為你提供一些幫助(非技術的勿加)。 QQ群&#xff1a; 281442983 (點擊鏈接加入群&#xff1a;http://jq.qq.com/?_wv1027&k29LoD19) 方法一&#xff1a;使用錨標記要滾動到的位置…

python excel模板 插件_python腳本——自動推送txt,EXCEL等文件模板

#!/usr/bin/python# -*- coding: utf-8 -*- #此處支持中文字符一定要放在前兩行&#xff0c;置后的話不生效&#xff0c;腳本報錯#!/usr/bin/env pythonimport smtplibfrom email.mime.text import MIMETextimport stringimport timeimport datetimeHOST "mail.xxxxxx.co…

電腦軟件:推薦10款實用的辦公效率神器

目錄 1.Everything 搜索神器 2.IDM 下載器 3.Dism 電腦維護工具 4.Captura 錄屏神器 5.Hourglass 倒計時軟件 6.Ditto剪切板增強工具 7.Snipaste 截圖神器 8.ScreenToGif GIF動態圖片錄制軟件 9.QuickLook文檔查看工具 10.processlasso 任務管理 1.Everything 搜索神器 Everyth…

財務系統專用服務器中標公告,東南大學財務處服務器存儲-招標辦公室.doc

東南大學財務處服務器存儲-招標辦公室東南大學財務處服務器、存儲、防雷系統采購招標公告項目名稱&#xff1a;標段一&#xff1a;一卡通數據庫生產服務器、一卡通數據庫容災服務器標段二&#xff1a;一卡通系統刀片服務器標段三&#xff1a;一卡通存儲設備標段四&#xff1a;一…

Finereport集群配置

增加配置文件cluster.xml 將配置包resource文件夾下的cluster.xml打開&#xff0c;如果沒有cluster.xml&#xff0c;則新建一個&#xff0c;基本內容如下&#xff1a; <?xml version"1.0" encoding"UTF-8" ?> <ClusterConfig useCluster"t…

deepin桌面為什么那么卡_deepin因NVIDIA顯卡造成開機啟動問題:卡在開機logo界面+進入桌面鼠標一直轉圈...

寫在前面&#xff1a;前兩天為了做人工智能的作業&#xff0c;給自己和室友裝了一個deepin15.7的系統(我和室友電腦均是NVIDIA顯卡)&#xff0c;想著自己裝好之后不會出現什么問題&#xff0c;結果錯誤還是如期而至&#xff0c;無奈&#xff0c;只能自己親自想辦法&#xff0c;…

數據庫:MySQL、SqlServer、Oracle對比

一、MySQL 優點&#xff1a; 軟件體積小、速度快、免費開源&#xff1b; 跨平臺&#xff1b; 因為是開源數據庫&#xff0c;提供的接口支持多種語言連接操作 &#xff1b; MySQL的核心程序是采用完全的多線程編程。并且是輕量級的進程&#xff0c;它可以靈活地為用戶提供服務…