亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL Server中交叉聯接的使用方法

發布時間:2021-07-06 18:21:32 來源:億速云 閱讀:234 作者:chen 欄目:數據庫

這篇文章主要介紹“SQL Server中交叉聯接的使用方法”,在日常操作中,相信很多人在SQL Server中交叉聯接的使用方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”SQL Server中交叉聯接的使用方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

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

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

select * from t1 cross join t2

2、交叉聯接的語法格式

SQL Server中交叉聯接的使用方法

select * from t1 cross join t2;--常用寫法 select * from t1, t2;-- SQL:1989的規范 select * from t1 cross join t2 where 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代替,效率會更高一些。如果需要為所有的可能性都返回數據聯接查詢可能會非常實用。

到此,關于“SQL Server中交叉聯接的使用方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德令哈市| 梨树县| 板桥市| 平昌县| 宁南县| 江陵县| 定远县| 屏东市| 商丘市| 隆尧县| 邵阳县| 伊吾县| 清苑县| 万载县| 宜君县| 侯马市| 楚雄市| 天津市| 克东县| 日照市| 洪湖市| 宁阳县| 蒲江县| 吴川市| 榕江县| 广汉市| 祁阳县| 双桥区| 清流县| 凉山| 苍梧县| 广东省| 鲁山县| 日照市| 乌兰浩特市| 道真| 栖霞市| 微博| 罗山县| 仲巴县| 文成县|