LEFT JOIN的條件處理

2021-10-06 07:33:51 字數 1422 閱讀 2842

select * from classes;

id    name

1    一班

2    二班

3    三班

4    四班

select * from students;

id  class_id  name   gender

1    1        小明        m

2    1        小紅        f

3    1        小軍        m

4    1        小公尺        f

5    2        小白        f

6    2        小兵        m

7    2        小林        m

8    3        小新        f

9    3        小王        m

10    3       小麗        f

找出每個班級的名稱及其對應的女同學數量

#正確

select c.name, count(s.name) as num

from classes c left join students s

on s.class_id = c.id

and s.gender = 'f'

group by c.name

或者

#錯誤

select c.name, count(s.name) as num

from classes c left join students s

on s.class_id = c.id

where s.gender = 'f'

group by c.name

2.找出一班的同學總數

#正確

select c.name, count(s.name) as num

from classes c left join students s

on s.class_id = c.id

where c.name = '一班'

group by c.name

或者

#錯誤

select c.name, count(s.name) as num

from classes c left join students s

on s.class_id = c.id

and c.name = '一班'

group by c.name

總結:在left join語句中,左表過濾必須放where條件中,右表過濾必須放on條件中

left join加上where條件的困惑

left join的困惑 一旦加上where條件,則顯示的結果等於inner join 將where 換成 and 用where 是先連線然後再篩選 用and 是先篩選再連線 資料庫在通過連線兩張或多張表來返回記錄時,都會生成一張中間的臨時表,然後再將這張臨時表返回給使用者。在使用left jion...

left join加上where條件的困惑

left join的困惑 一旦加上where條件,則顯示的結果等於inner join 將where 換成 and 用where 是先連線然後再篩選 用and 是先篩選再連線 資料庫在通過連線兩張或多張表來返回記錄時,都會生成一張中間的臨時表,然後再將這張臨時表返回給使用者。在使用left jion...

left join加上where條件的困惑

eft join的困惑 一旦加上where條件,則顯示的結果等於inner join 將where 換成 and 用where 是先連線然後再篩選 用and 是先篩選再連線 資料庫在通過連線兩張或多張表來返回記錄時,都會生成一張中間的臨時表,然後再將這張臨時表返回給使用者。在使用left jion時...