sql连接查询中on和where的区别

在连接查询中我们使用on和where都可以进行条件筛选但是二者是有区别的。

例如:

person表

city表

使用where


SELECT name, age, cityName
FROM person
	LEFT JOIN city ON person.cityId = city.id
WHERE city.id > 2

写在where后面的条件是先对两个表进行左连接,然后根据条件进行筛选(筛选掉了所有city.id小于等于2的记录)。

使用on


SELECT name, age, cityName
FROM person
	LEFT JOIN city
	ON person.cityId = city.id
		AND city.id > 2

写在on后面的条件是先对后面的表(表city)执行筛选(筛选city.id大于2,筛选后只有广州),然后再执行左连接(所以city.id小于等于2的cityName都为空)。

posted @ 2020-08-05 17:36  可爱的黑精灵  阅读(695)  评论(0)    收藏  举报