group by语法 on 和where的区别?
来源:5-2 JOIN和GROUP BY

birdskyws
2018-11-11
on p.categoryId =cat_min.categoryId where p.price=cat_min.min_price
用and可以吗?
写回答
1回答
-
ccmouse
2018-11-12
on是修饰join的,where是修饰join的结果的。一般我们on里面只写需要链接的外键。
另一种写法其实是join之后没有on,直接where a.id=b.id and b.val=... 就是把本该写在on后面的东西写到where里。可想而知运行的时候先做所谓的笛卡尔积(我有提到),然后再在里面搜索。
对于内链接来说,这两种写法结果是一样的,运算过程有区别但是数据库对于后面不写on的情况一般也能优化,但我们还是建议把链接条件放在on里面。
对于外链接,结果会有不同,主要是on里的条件包括了null的情况,但放到where里就没有了。10
相似问题