如何使用LEFT JOIN實現多表查詢

2021-08-18 23:03:26 字數 1171 閱讀 2687

什麼是left join請各位自行了解,廢話不多說,先直接上三張表

組織表(t_organization)

部門表(t_department)

使用者表(t_user)

邏輯是組織下面有部門,部門下面有使用者,組織和部門通過organization_id欄位關聯,部門和使用者通過department_id關聯

實現以下幾種查詢

1.兩張表的查詢:

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

select

*from

t_organization as o

left join t_department as d on o.organization_id = d.organization_id

查詢結果如下:

2.三張表的查詢(更多表以此類推)

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

select

*from

t_organization as o

left join t_department as d on o.organization_id = d.organization_id

left join t_user as u on d.department_id = u.department_id

查詢結果如下:

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

mysql 如何優化left join

今天遇到乙個left join優化的問題,搞了一下午,中間查了不少資料,對mysql的查詢計畫還有查詢優化有了更進一步的了解,做乙個簡單的記錄 select c.from hotel info original c left join hotel info collection h on c.hot...

hibernate使用left join一點感悟

班級表class和學生表student表示一對多關係。public class class public class student 做關聯查詢的時候,為什麼我們不用 select s from student s left join class c where c.clasnumber 3 呢?而...

使用MulticastSocket實現多點廣播

使用multicastsocket實現多點廣播 datagramsocket只允許資料報傳送給指定的目標位址,而multicastsocket可以將資料報以廣播方式傳送到數量不等的多個客戶端。讓該類實現runnable介面,該類的例項可作為執行緒的target public class multic...