1. 程式人生 > 其它 >使用left join實現多表聯查

使用left join實現多表聯查

技術標籤:資料庫mysql資料庫sqlleft join多表聯查

left join:
返回包括左表中的所有的記錄和右表連線欄位相等的記錄

 select * from A left join B on A.id = B.id

因為left join是以左表為主表,所以只要左表有資料,不管右表有沒有資料。(如果右表沒有資料則為null),查詢結果都會存在。

right join:
返回包括右表中的所有的記錄和左表連線欄位相等的記錄

select * from A right join B on A.id = B.id

inner join:
等值連線,只返回兩個表中連線欄位相等的值

left join練習
邏輯是年級下面有班級,班級下面有學生,年級和班級通過grade_id欄位關聯,

班級和學生通過class_id關聯

年級表(grade)
在這裡插入圖片描述

班級表(class)
在這裡插入圖片描述

學生表(student)

在這裡插入圖片描述

(1)兩張表的查詢

查詢所有年級資訊以及下屬中所有班級資訊

select *from grade g left join class c on g.grade_id=c.grade_id;

查詢結果如下:
在這裡插入圖片描述

(2)三張表查詢

查詢所有組織資訊以及下屬所有部門資訊以及下屬所有使用者資訊:

select *from grade g left join class c on g.grade_id=
c.grade_id left join student s on c.class_id=s.class_id;

查詢結果如下:

在這裡插入圖片描述

查詢名字為Tom的學生的所有資訊:

 select *from grade g left join class c on g.grade_id=c.grade_id 
 left join student s on c.class_id=s.class_id where s.name='Tom';

查詢結果如下:
在這裡插入圖片描述