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.mzph.cn/news/270760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

后端技术:SpringBoot配置热加载工具(devtools)笔记

今天给大家介绍IDEA开发工具如何配置devtools热加载工具。1、devtools原理介绍spring-boot-devtools是spring为开发者提供的热加载工具包。主要原理是使用了两个ClassLoader类加载器,一个Classloader加载那些不会改变的类(第三方Jar包)&#…

服务器不能创建对象教务系统,[转]解决强智教务系统非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);

电脑软件:主流的压缩软件对比,看完你就会选择了

目录 1、WinRAR 2、360压缩 3、7-ZIP 4、Bandizip 5、好压/快压 今天小编给大家介绍一下主流的压缩软件&#xff0c;看完你就会选择了&#xff01; 目前主流的压缩软件主要有WinRAR、360压缩、7-ZIP、Bandzip、好压。现在给大家逐个介绍一下&#xff0c;每款压缩软件的特。 1、…

控制DIV内容滚动的方法,实现不用拖滚动条就可以看到最新消息

三种控制DIV内容滚动的方法&#xff1a; 本人qq群也有许多的技术文档&#xff0c;希望可以为你提供一些帮助(非技术的勿加)。 QQ群&#xff1a; 281442983 (点击链接加入群&#xff1a;http://jq.qq.com/?_wv1027&k29LoD19) 方法一&#xff1a;使用锚标记要滚动到的位置…

电脑软件:推荐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…

数据库:MySQL、SqlServer、Oracle对比

一、MySQL 优点&#xff1a; 软件体积小、速度快、免费开源&#xff1b; 跨平台&#xff1b; 因为是开源数据库&#xff0c;提供的接口支持多种语言连接操作 &#xff1b; MySQL的核心程序是采用完全的多线程编程。并且是轻量级的进程&#xff0c;它可以灵活地为用户提供服务…

软件:分享9款实用电脑软件,值得看一看

目录 01.ArcTime 02.Luminar 4 03.嗨格式数据恢复大师 04. iTools 05.皮皮直连 06.Kodi 07. PhotoZoom 08.AnyDesk 09.射手影音 今天给大家分享9款实用电脑软件&#xff0c;值得看一看。 01.ArcTime 下载地址&#xff1a;https://arctime.org/ 这是一款特别好用的字幕制作软件。…

怎么转化大小写_亚马逊search term被限制,Search Terms只能写一行怎么办?

search term简称ST&#xff0c; 也叫做亚马逊的关键字&#xff0c;由亚马逊为卖家提供的&#xff0c;除了Title标题&#xff0c;Description描述之外的关键字拓展功能&#xff0c;正确的书写5行描述可以提曝光&#xff0c;流量&#xff0c;和转化.关键字建议包含了客户的具体需…

Idea实现WebService实例 转

作者&#xff1a;http://blog.csdn.net/dreamfly88/article/details/52350370 因为工作需要&#xff0c;数据传输部分需要使用webservice实现&#xff0c;经过两天的研究&#xff0c;实现了一个简单的例子&#xff0c;具体方法如下。 首先需要新建一个项目&#xff0c;如图&…

电脑操作系统维护10条实用建议

目录 1、经常进行“磁盘清理”和磁盘碎片整理” 2、移动internet临时文件和临时交换文件 3、开启wondows xp保留的20%带宽 4、删除不必要的系统声音 5、定期清理internet预读文件 6、关于internet explorer 7、优化硬盘参数 8、让系统自动释放系统资源 9、固定自己的DNS和IP 10…

h5 手风琴效果_小程序-实现折叠面板-手风琴效果

背景无论是在小程序还是 h5 网页,折叠菜单,手风琴是一个非常常见的效果,如今也有很多现成的 UI 组件库已经实现了这一效果的,但有时候在写原生小程序时,单单就是一个折叠菜单效果,却要引入整个 UI 库,有点得不偿失以下就自己手动实现一个的实例效果具体实现如下是wxml示例代码&…

oracle数据库连接 ORA-12638:身份证明检索失败

连数据库的时候突然报了一个这个 查找各种办法&#xff0c;发现自己从10g换成了11g&#xff0c;不过这个没有什么关系&#xff0c;跟oracle的安全设置有关系&#xff0c; 首先从开始菜单找到Net Manager 打开&#xff0c;选择本地&#xff0c;概要文件&#xff0c;下拉列表中选…

IntelliJ IDEA 2021.1更新了好多实用功能介绍

目录 1、WSL 2的支持 2、内置的HTML预览器 3、搜索范围的增强 4、增强的Pull Request支持 5、拆分窗口优化 6、JAVA 16的支持 7、更智能的数据检查 IntelliJ IDEA 2021.1 正式版发布了&#xff0c;这个版本最大的更新内容&#xff0c;就是支持WSL 2和JAVA 16了。而且除了支持WS…

生产三码 黑苹果_黑苹果OC配置工具:OpenCore Configurator v2.15.2.0

一、版本软件版本&#xff1a;OpenCore Configurator 5.15.0.1更新日期&#xff1a;2020年10月14日系统版本&#xff1a;macOS 10.12 Sierra及以上二、OpenCore简介OpenCore是非常优秀的开源软件&#xff0c;旨在通过提供更加通用和模块化的系统来解决Clover带来的限制和问题&a…