WHERE和HAVING以及ON的区别
WHERE和HAVING的根本区别
WHERE子句在GROUP BY分组和数据汇总之前对数据行进行过滤。
HAVING子句在GROUP BY分组和数据汇总之后对数据行进行过滤。
SELECT col, sum(col2)
FROM t
WHERE condition
GROUP BY col1
HAVING condition;
WHERE和ON的主要区别
对于内连接查询,WHERE子句和ON子句等效。
对于外连接查询,ON子句在连接操作之前执行,WHERE子句(逻辑上)在连接操作之后执行。
SELECT...
FROM t1
JOIN t2 ON (condition)
WHERE condition;
这三个查询结果是等效的。以上三个语句都是内连接查询。