mysql 自連線。看了不懂你來打我

2021-10-04 12:05:56 字數 1331 閱讀 5505

自連線是將自己一張表看做兩張表之後進行的等值連線。如果你要查詢下列表中員工的姓名和員工上級領導的姓名怎麼查?這兩個資料都是在同一張表中(注釋:manager_id為領導的id)

所以說如果我們需要輸出員工名和員工的領導名。那麼我們應該在表中找到其對應的領導id。

例如kochhar這個員工它對應的manger_id為100,那我們在回到employee_id來找id為100的員工k_ing。就是說kochhar的領導為k_ing。

這樣思路是不是就很明顯了,我們將上表看為兩個表我們只展示員工id和對應的領導id。

select employeed_id,last_name,manager_id

from employees;

我們把乙個表視為員工表如下

這錶視為領導表

那麼這樣就相當於我們之前的等值連線了哦。不過不同的是我們使用的時一張表,所以在語法中我們需要把表取別名 用這個來區分。

select e.employee_id,e.last_name,d.employee_id 領導id,d.last_name 領導名

from employees e,employees d

where e.

`manager_id`

=d.`employee_id`

;

(記得哦我們這裡雖然是e.和d.但是我們使用的一張表,我們用著兩個來區別我們剛剛上面提到的兩個表)

最終結果:

這下看看,是不是和我們自己找的資料是一樣的

另外剛剛我在寫**的時候將連線條件中

e.manager_id=d.employee_id;修改為

d.manager_id=e.employee_id;

結果就不一樣了,

發現沒,你會發現前面才是領導名和id後面是員工名和id。按照我修改之後的就相當於用領導的id去匹配了員工id。雖然這樣也能得出我們的結果,但是順序改變,自己需要注意欄位名了哦。

mysql自連線例項 Mysql自連線查詢例項詳解

自連線查詢 假想以下場景 某一電商 想要對站內產品做層級分類,乙個類別下面有若干子類,子類下面也會有別的子類。例如數碼產品這個類別下面有筆記本,台式電腦,智慧型手機等 筆記本,台式電腦,智慧型手機又可以按照品牌分類 品牌又可以按照 分類,等等。也許這些分類會達到乙個很深的層次,呈現一種樹狀的結構。那...

mysql自連線查詢 Mysql自連線查詢例項詳解

自連線查詢 假想以下場景 某一電商 想要對站內產品做層級分類,乙個類別下面有若干子類,子類下面也會有別的子類。例如數碼產品這個類別下面有筆記本,台式電腦,智慧型手機等 筆記本,台式電腦,智慧型手機又可以按照品牌分類 品牌又可以按照 分類,等等。也許這些分類會達到乙個很深的層次,呈現一種樹狀的結構。那...

MySQL 自聯結 自連線

例如想於下方表中找出與在 愛藝奇 公司的客戶同名的顧客。第一步 找出在 愛藝奇 的客戶的姓名,第二步 從全表中去查詢姓名與第一步查詢出來一樣的客戶 where cust name in in 不能寫成 不然容易報錯。因為子查詢有可能返回的是多條記錄。這跟子查詢只能返回單列無關,單列與單行。子查詢 s...