LEFT JOIN的條件處理

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

 

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

#正確
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條件中

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章