Left Join 中 and 和 where 的区别

1.Student表:

 

 

2.SC表:

3.使用左外连接查询两个表,显示的数据是左表中的所有数据,包含NULL值。是下面的临时表

SELECT a.SId,a.Sname,b.score FROM Student a LEFT JOIN SC b ON a.SId = b.SId;

 

 4.使用where:

  where条件是在临时表生成后使用,再对临时表进行过滤的条件。生产临时表后所有不符合where条件的都去掉。

SELECT a.SId,a.Sname,b.score FROM Student a LEFT JOIN SC b ON a.SId = b.SId 
WHERE b.score > 60;

 

 

5.使用and:

  and条件是在生成临时表时使用的条件。左表(a)的记录将会全部表示出来,而右表(b)只会显示符合搜索条件的记录(例子中为: a.Sid = b.Sid),b表记录不足的地方均为NULL。AND 后面又多加一个条件,相当于对b表过滤时有两个条件,a中不符合b表条件的均为NULL。

SELECT a.SId,a.Sname,b.score FROM Student a LEFT JOIN SC b ON a.SId = b.SId 
AND b.score > 60;

 

posted @ 2023-01-09 16:14  湘summer  阅读(934)  评论(0编辑  收藏  举报