SQL进阶教程——自连接的用法(第二章)

本文深入探讨了SQL中的自连接概念,包括如何通过自连接删除重复行、查找局部不一致、组合商品以及排序。自连接虽复杂但实用,常与非等值连接结合,适用于处理集合问题。理解自连接对于提升SQL技能和优化性能至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 什么是自连接

针对相同的表进行的连接被称为“自连接”,一旦熟练掌握自连接技术,我们便能快速的解决很多问题。但是,其处理过程不太容易想象,以至于常常被人们敬而远之。
理解自连接不仅可以让我们学会实际工作中能用到的技能,还能增进我们对“面向集合”这一SQL语言特征的理解。

2. 可重排列,排列,组合

  • Products
name(商品名称) price(价格)
苹果 50
橘子 100
香蕉 80

假设这列有一张存放了商品名称及价格的表,表里有“苹果,橘子,香蕉”这三条记录。在生成用于查询销售额的报表等的时候,我们有时候需要获取这些商品的组合。
这里说的组合其实分为两种类型。一种是有顺序的有序对,另一种是无顺序的无序对。对应着学校里的术语“排列”和“组合”

--用于获取可重排列(有序对)的SQL语句
SELECT P1.name AS name_1,P2.name AS name_2
FROM Products P1,Products P2;--交叉连接生成笛卡尔积

--用于获取排列的SQL语句
SELECT P1.name AS name_1,P2.name AS name_2
FROM Products P1,Products P2
WHERE P1.name <> P2.name;

--用于生成组合的SQL语句
SELECT P1.name AS name_1,P2.name AS name_2
FROM Products P1,Products P2
WHERE P
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值