PostgreSQL自連線查詢

2021-08-17 17:25:39 字數 1231 閱讀 6034

首先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...