【SQL】多表查询中的 外连接 ,on,where

先简单粗暴给个结论,多表连结查询中,on比where更早起作用,系统首先根据各个表之间的联接条件,把多个表合成一个临时表后,再由where进行匹配过滤,where后语句为真,则能查询出来,而通过外连接,例如左连接on,则无论是否为真,都会把左边表的内容都查询出来。

多表查询基本语法

select*from table_1,table_2 where table_1.no=table_2.no

实例:

select*from stu,sc where stu.sno=sc.sno

 查出了stu表中与sc表中sno相等的记录

(左)外连接:表的记录将会全部表示出来,而只会显示符合搜索条件的记录,同时右表中没有记录的地方均用NULL替代

select*from table_1 left outer join table_2 on table_1.no=table_2.no

注:outer可省略,右连接和全外连接只需要把left修改成right或full,语法基本一致

实例:

select*from stu left outer join sc on stu.sno=sc.sno

对比where,查出20条记录,多查出了11条记录,因为无论sno是否匹配,及后面语句是否为真,优先显示左表的所有记录,并把不匹配项的右表都设为NULL

猜你喜欢

转载自www.cnblogs.com/ByTwo/p/12006446.html