自连接的用法——SQL 学习二

SQL 的连接运算:

  • 根据其特征的不同,有着不同的名称,如内连接、外连接、交叉连接等。
  • 一般来说,这些连接大都是以不同的表或视图为对象进行的,但针对相同的表或相同的视图的连接也并没有被禁止。
  • 针对相同的表进行的连接被称为“自连接”(self join)。

 

这里有一张存放了商品名称及价格的表,表里有“苹果、橘子、香蕉”这3条记录

 

组合其实分为两种类型。一种是有顺序的有序对(ordered pair),另一种是无顺序的无序对(unordered pair)

有序对用尖括号括起来,如<1,2>;无序对用花括号括起来,如{1,2}。在有序对里,如果元素顺序相反,那就是不同的对,

因此<1,2>≠<2,1>;而无序对与顺序无关,因此{1,2}={2,1}。

用学校里学到的术语来说,这两类分别对应着“排列”(有序对)“组合”(无序对)

-- 生成有序对非常简单。像下面这样通过交叉连接生成笛卡儿积(直积),就可以得到有序对
--
用于获取可重复排列的 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;

 

posted @ 2020-03-06 11:17  An-Optimistic-Person  阅读(245)  评论(0)    收藏  举报