連線查詢:
當查詢資料時,通過連線操作查詢出存放在多個表中的不同資料,當兩個或者多個表中存在相同意義的字段時,
便可以通過這些欄位對不同的表進行連線查詢。
自連線:
如果在乙個連線查詢中,涉及的兩個表都是同乙個表,這種查詢稱為自連線查詢。自連線是一種特殊的內連線,
它是指相互連線的表在物理上為同一張表,但可以在邏輯上分為兩張表。
例:下面是一張公司員工表,要求找出每個員工的上級,並顯示員工名和上級名。
如圖,name表示員工名,id表示員工編號,mac表示上級編號
此時,員工表和上級表在同乙個表中,應該用到自連線,仔細觀察可以發現欄位id和字段mac有關聯,
因此邏輯上可以把一張表看作兩張表
emp a 員工表
emp b 上級表
sql語句
查詢結果
可以發現員工名和上級名反了。
錯誤在哪呢?其實最後的等值條件錯了,
兩張表的關係為員工的上級編號=上級的員工編號
所以修改sql為
查詢結果
查詢正確
總結:關於自連線應該理解它是把一張表看作兩張表,關鍵在於找兩張表的關係,只要能找到關係,就能夠寫出sql語句。
mysql自連線查詢 Mysql自連線查詢例項詳解
自連線查詢 假想以下場景 某一電商 想要對站內產品做層級分類,乙個類別下面有若干子類,子類下面也會有別的子類。例如數碼產品這個類別下面有筆記本,台式電腦,智慧型手機等 筆記本,台式電腦,智慧型手機又可以按照品牌分類 品牌又可以按照 分類,等等。也許這些分類會達到乙個很深的層次,呈現一種樹狀的結構。那...
SQL查詢 內連線 外連線 自連線查詢
先建立2個表 學生表和教師表 在每個表中找出符合條件的共有記錄。x inner join y on.第一種寫法 只用where select t.teacher name,s.student name from teacher t,student s where t.id s.teacher id ...
mysql自連線例項 Mysql自連線查詢例項詳解
自連線查詢 假想以下場景 某一電商 想要對站內產品做層級分類,乙個類別下面有若干子類,子類下面也會有別的子類。例如數碼產品這個類別下面有筆記本,台式電腦,智慧型手機等 筆記本,台式電腦,智慧型手機又可以按照品牌分類 品牌又可以按照 分類,等等。也許這些分類會達到乙個很深的層次,呈現一種樹狀的結構。那...