MySQL 自聯結 自連線

2021-09-24 02:47:16 字數 1075 閱讀 6712

例如想於下方表中找出與在「愛藝奇」公司的客戶同名的顧客

第一步:找出在「愛藝奇」的客戶的姓名,第二步:從全表中去查詢姓名與第一步查詢出來一樣的客戶

where cust_name in ,「in」不能寫成「=」,不然容易報錯。因為子查詢有可能返回的是多條記錄。這跟子查詢只能返回單列無關,單列與單行。

子查詢:

select cust_id ,cust_name ,cust_adress

from customers

where cust_name in (select cust_name

from customers

where cust_company=

'愛藝奇'

一張表假設為 兩張一樣的表,分別對兩張表(一樣的兩張表)進行聯結得到笛卡兒積,再對笛卡爾積中的結果根據where進行 行過濾。

select c1.cust_id ,c1.cust_name ,c1.cust_adress

from customers as c1 ,customers as c2

where c2.cust_company =

'愛藝奇'

可以看出與使用子查詢的結果是一樣的,但是許多dbms處理聯結遠比處理子查詢快的多可以把以上sql語句理解為:

別名:此查詢中兩張表其實是一樣的表,dbms並不知道你要引用的是哪張表,所以解決這個問題需要用到別名

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

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

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

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

mysql表自聯結sql寫法 SQL表自連線用法

乙個表與自身進行連線,稱為自連線 問題的提出 乙個提出這樣乙個sql題目,說自己想了很久沒解決,我一看,這不是很簡單嗎 可是自己在查詢分析器除錯了半天原來問題並不是那不簡單 有乙個學生表,裡面有 學號 功課編號 學生成績三個欄位.用乙個sql查詢語句得出每門功課成績最好的前兩名 學號 功課編號 學生...