第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

SQL Join3

1. 前言

上一小節(jié)中我們學(xué)習(xí)到了外連接,本小節(jié)我們將介紹一種特殊的連接——自連接。

本小節(jié)測(cè)試數(shù)據(jù)如下,請(qǐng)先在數(shù)據(jù)庫(kù)中執(zhí)行:

DROP TABLE IF EXISTS imooc_employee;
CREATE TABLE imooc_employee
(
 id int PRIMARY KEY,
 employee_name varchar(20),
 salary int,
 manager_id int
);
INSERT INTO imooc_employee VALUES(1, 'Joe', 7000, 3);
INSERT INTO imooc_employee VALUES(2, 'Henry', 8000, 4);
INSERT INTO imooc_employee VALUES(3, 'Sam', 6000, NULL);
INSERT INTO imooc_employee VALUES(4, 'Pedro', 9000, NULL);

說(shuō)明: 我們新建一個(gè) imooc_employee 表,imooc_employee 表包含了所有員工,員工的經(jīng)理(manager_id)也屬于員工,如果manager_id 字段為 NULL,則表示該員工暫無(wú)經(jīng)理。

2. 自連接

自連接指的是與自身進(jìn)行連接,即表 A 與表 A 自身進(jìn)行連接,是一種特殊的連接方式。

2.1 例1、查詢薪水

請(qǐng)編寫(xiě) SQL 語(yǔ)句,查詢imooc_employee中收入超過(guò)其經(jīng)理的員工的姓名。

分析:

我們可以把 manager_id 理解為一個(gè)外鍵,這個(gè)外鍵指向經(jīng)理 id,只不過(guò)是表與其自身的關(guān)聯(lián);因此可以充分利用連接操作,將表 imooc_employee 與其自身連接,連接條件是 manager_id 和 id。

表 a 可以理解為員工表,表 b 理解為經(jīng)理表,篩選條件為員工表的薪水大于經(jīng)理表薪水。

語(yǔ)句

整理可得語(yǔ)句如下:

SELECT a.employee_name
FROM imooc_employee AS a
JOIN imooc_employee AS b
ON a.manager_id = b.id
WHERE a.salary > b.salary;

結(jié)果如下:

+---------------+
| employee_name |
+---------------+
| Joe           |
+---------------+

由于自連接是與自身進(jìn)行連接,因此對(duì)于別名的要求是必須的,否則解析引擎無(wú)法判斷出二者之間的關(guān)系。

3. 個(gè)人經(jīng)驗(yàn)

  • 自連接雖然使用較少,但往往在有的時(shí)候可以起到奇效。

  • 在使用自連接時(shí),請(qǐng)先指定好別名,然后將其當(dāng)作兩張表來(lái)處理,這樣就不會(huì)引起歧義了。