例如想於下方表中找出與在「愛藝奇」公司的客戶同名的顧客。
第一步:找出在「愛藝奇」的客戶的姓名,第二步:從全表中去查詢姓名與第一步查詢出來一樣的客戶
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查詢語句得出每門功課成績最好的前兩名 學號 功課編號 學生...