使用left join實現多表聯查
阿新 • • 發佈:2021-02-10
技術標籤:資料庫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';
查詢結果如下: