SQL研习录(34)——交叉连接(CROSS JOIN)知识详解及示例分析

本文深入解析SQL中的交叉连接(CROSS JOIN)概念,通过实例演示如何实现两个表的笛卡尔积,适用于数据库操作初学者及SQL进阶者。

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,这就是交叉连接,你学废了吗 ~ ~

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值