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里就没有了。

1
0

Google面试官亲授-Java面试新手尊享课

为面试新手量身定制的Java面试尊享课,解锁“鲤鱼跃龙门”的妙招

2853 学习 · 180 问题

查看课程