《SQL进阶教程》

第一章 神奇的SQL之自连接

自连接

概述

一般来说,这些连接大都是以不同的表或视图 为对象进行的,但针对相同的表或相同的视图的连接也并没有被禁止。针对相同的表进行的连接被称为“自连接”(self join)。

可重排列、排列、组合
利用自联结删除重复行
排序

窗口函数:

1
2
3
4
SELECT name, price,
RANK() OVER (ORDER BY price DESC) AS rank_1,
DENSE_RANK() OVER (ORDER BY price DESC) AS rank_2
FROM Products;

本节要点:

  1. 自连接经常和非等值连接结合起来使用。

  2. 自连接和 GROUP BY 结合使用可以生成递归集合。

  3. 将自连接看作不同表之间的连接更容易理解。

  4. 应把表看作行的集合,用面向集合的方法来思考。

  5. 自连接的性能开销更大,应尽量给用于连接的列建立索引

练习题: