SQL研习录(34)——交叉连接(CROSS JOIN)知识详解及示例分析
版权声明
- 本文原创作者:清风不渡
- 博客地址:https://blog.csdn.net/WXKKang
一、引入
今天发现了个新的东西,在SQL Server Management Studio中使用编辑器设计查询时,生成的查询语句是这样的:

嗯?这个CROSS JOIN是什么东西呢?怎么没见过呀 ~ ~ 勾起我的兴趣之后,就去查了相关资料,现做以总结
二、交叉连接 CROSS JOIN
什么是交叉连接呢?就是查两个笛卡尔乘积,唔…,什么是笛卡尔乘积呢?百度百科上是这样解释的:

想了一会儿,用大白话来讲就是把若干个数据集合进行配对,所谓笛卡尔积就是进行配对时,所有的可能性的总数,嗯…,咱们来试下吧~
三、示例
1、创建测试库(如下有商品资料表、包装资料表两张表,各有三种商品两种包装类型)
CREATE TABLE SPZL(
SPID VARCHAR(11) PRIMARY KEY,
SPMCH VARCHAR(50) NOT NULL DEFAULT ''
)
GO
CREATE TABLE BZZL(
BZID VARCHAR(11) PRIMARY KEY,
BZMCH VARCHAR(50) NOT NULL DEFAULT ''
)
GO
INSERT INTO SPZL
VALUES ('S01','心脑宁胶囊'),('S02','小儿热速清颗粒'),('S03','复方甘草酸苷片')
GO
INSERT INTO BZZL
VALUES ('B01','袋'),('B02','盒')
GO
那么,我们可以通过CROSS JOIN来得出商品和包装进行配对的所有可能,代码如下:
DECLARE @SPSHL INT,@BZSHL INT,@PDSHL INT
SELECT @SPSHL=COUNT(1) FROM SPZL
SELECT @BZSHL=COUNT(1) FROM BZZL
SELECT @PDSHL=COUNT(1) FROM SPZL CROSS JOIN BZZL
PRINT '共有商品种类:'+CONVERT(VARCHAR(2),@SPSHL)+'个,包装种类:'+CONVERT(VARCHAR(2),@BZSHL)+'个,如进行配对则有:'+CONVERT(VARCHAR(2),@PDSHL)+'种可能'
执行结果如下:

OK,这就是交叉连接,你学废了吗 ~ ~
本文深入解析SQL中的交叉连接(CROSS JOIN)概念,通过实例演示如何实现两个表的笛卡尔积,适用于数据库操作初学者及SQL进阶者。
——交叉连接(CROSS JOIN)知识详解及示例分析&spm=1001.2101.3001.5002&articleId=108444398&d=1&t=3&u=68416a503b554ddd88b5228360749df1)
1305

被折叠的 条评论
为什么被折叠?



