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