首先sql中的自連線查詢是一種比較特殊的多表查詢方式,其特殊之處就在於資料**於同一張表。
很多時候我們在第一次接觸自連線查詢時會比較迷亂,不知道怎麼去理解。所以我們在處理這種自連線查詢時,不要去刻意的在意只有一張表,而是把這張**表當作乙個檢視,我們需要查資料,就給其取乙個別名,這樣就刻意把之前的表認為成另乙個表。這樣當我們需要時關聯幾張表時,就取幾個別名,就當作是幾張表,下意識的去當作不同的表,只是內容欄位是一致就可以了。
2.表中存在層級關係的,如:員工,員工上級,這時就需要自連線來篩選了。
下邊舉個例子:
建立一張員工表:
create table "public"."emp" (
"id" serial not null,
"name" varchar(255) collate "default",
"leader" int4,
"age" int4,
"gender" varchar(255) collate "default",
constraint "emp_pkey" primary key ("id")
)
資料:
insert into emp values (1,'john', null, 30, 'men');
insert into emp values (2,'may', 1, 31, 'women');
insert into emp values (3,'wolf', 2, 29, 'men');
insert into emp values (4,'mar', 1, 40, 'women');
insert into emp values (5,'jack', 4, 28, 'men');
insert into emp values (6,'lili', 4, 37, 'women');
如查出所有員工的上級:
select
emp1. name emp_name,
emp2. name leader
from
emp emp1
left join emp emp2 on emp1.leader = emp2. id;
結果如下:
mysql自連線查詢 Mysql自連線查詢例項詳解
自連線查詢 假想以下場景 某一電商 想要對站內產品做層級分類,乙個類別下面有若干子類,子類下面也會有別的子類。例如數碼產品這個類別下面有筆記本,台式電腦,智慧型手機等 筆記本,台式電腦,智慧型手機又可以按照品牌分類 品牌又可以按照 分類,等等。也許這些分類會達到乙個很深的層次,呈現一種樹狀的結構。那...
mysql自連線例項 Mysql自連線查詢例項詳解
自連線查詢 假想以下場景 某一電商 想要對站內產品做層級分類,乙個類別下面有若干子類,子類下面也會有別的子類。例如數碼產品這個類別下面有筆記本,台式電腦,智慧型手機等 筆記本,台式電腦,智慧型手機又可以按照品牌分類 品牌又可以按照 分類,等等。也許這些分類會達到乙個很深的層次,呈現一種樹狀的結構。那...
SQL自連線查詢
問題 表testcolor title color sign a 紅 111 b 紅 222 a 綠 333 c 紅 444 轉檢視 title 紅 綠 a 111 333 b 222 null c 444 null 解答 declare sql nvarchar 1000 set sql sele...