详细:select Sname,SC.S# ,avg(score)
from Student,SC
where Student.S#=SC.S#
group by SC.S#,Sname
having avg(score)>85;
和Left Join的区别还有,为什么用","的时候,不加where也可以用
from Student,SC
where Student.S#=SC.S#
group by SC.S#,Sname
having avg(score)>85;
和Left Join的区别还有,为什么用","的时候,不加where也可以用
逗号表示两个表都存在的记录才显示出来;
left join 表示只要左边表里面有符合条件的数据就可以查找出来
你可以参考一下数据库的几个范式说明为什么用","的时候,不加where也可以用?
不加where条件可以用,但是这样的数据查出来有什么用吗?
加了where两个表根据关系进行匹配,默认:inner join
inner join是全链接,两个表中都必须匹配上
left join是左链接,left join左边表里的数据都会读出来,右边匹配上了就显示,没有就不显示。
欢迎光临我的博客
left join 左边表有的全部显出来,右边表只去匹配左表
其它的不一样
至于说Sql Server有没有对此语句进行优化,我不知道(即使是优化也要花费巨大的代价来分析好几十种可能性)。对于标准SQL规范而言,是不考虑系统有没有额外去优化的,要求专业的开发人员在写sql时就应该懂得这个差别。
因此一般使用where中关联会比join更好。