sql 中 left join 的使用

2022-05-17 12:11:01 字數 1122 閱讀 7977

left join 。是以左表為基礎,查詢右表的值。如果在右表中沒用沒有資料,則為null。

這裡有三張表。

線路bs_line:id,name(id主鍵)

線路段bs_seg:id,l_id,name(l_id關聯線路id)

配變bs_dsub:id,seg_id,name(seg_id關聯線路段id)

它們之間的關係是:  配變 -> 線路段 -> 線路。

現在的需求:

統計出每條線路有多少台配變

sql語句:

select bs_line.name, count(bs_dsub.name) dsub_num from

bs_line

left

join

bs_dsub

onbs_dsub.seg_id

in (select id from bs_seg where l_id =

bs_line.id)

group

bybs_line.name

/*group by 顯示線路

*/

執行該語句時,速度很慢。檢查了下sql語句,發現用in時,會遍歷多次。於是改為 =

select bs_line.name, count(bs_dsub.name) dsub_num from

bs_line

left

join

bs_dsub

onbs_dsub.seg_id

= (select id from bs_seg where l_id =

bs_line.id)

group

by bs_line.name

可以正常使用了。

回顧:1、from bs_line left join bs_dsub :表示 以bs_line為左表,以bs_dsub為右表。

2、bs_dsub.seg_id =(select id from bs_seg where l_id = bs_line.id) 中的 bs_line.id 指遍歷的每一條線路id值,以此為條件進行查詢。

3、在sql語句裡盡量不要用in,使用 '=',避免語句多次迴圈。

SQL中 left join 的底層原理

left join的實現效果就是保留左表的全部資訊,將右表往左表上拼接,如果拼不上則為null。除了left join以外,還有inner join outer join right join等,文章不介紹其他連線的具體效果,主要講解join的底層原理是如何實現的?具體效果是怎樣呈現的?只有懂得了底...

sql的left join 命令詳解

給個通俗的解釋吧.例表a aid adate 1 a1 2 a2 3 a3 表b bid bdate 1 b1 2 b2 4 b4 兩個表a,b相連線,要取出id相同的字段 select from a inner join b on a.aid b.bid這是僅取出匹配的資料.此時的取出的是 1 a...

sql的left join 命令詳解

給個通俗的解釋吧.例表a aid adate 1 a1 2 a2 3 a3 表b bid bdate 1 b1 2 b2 4 b4 兩個表a,b相連線,要取出id相同的字段 select from a inner join b on a.aid b.bid這是僅取出匹配的資料.此時的取出的是 1 a...