【已解决】 where 与 having 使用时带来的区别
SELECT
manager_id,
MIN(salary)
FROM
employees
WHERE manager_id IS NOT NULL
GROUP BY manager_id
HAVING MIN(salary) >= 6000 ;
# 很神奇,下面这种写法与上面的不同,有12条记录,上面的只有10条记录
SELECT
manager_id,
MIN(salary)
FROM
employees
WHERE manager_id IS NOT NULL AND salary >= 6000
GROUP BY manager_id ;
两种写法,为什么得到的结果不一样
注:这里第一个方式实际就是 having 与select 顺序的问题。
如果是先having 再select,第一种方式不会出错。但实际出错了,并且having中可以使用select中别名,猜测是不是 先select 再having呢?
完结了,确实是先 having 再select。但是mysql额外允许在having中使用select别名。
查询顺序那个,是我理解错了。先分组再过滤 和 先过滤再分组,在 过滤条件为 字段最低大于xxx 或 字段最高 小于xxx 这种情况下,得到的结果不一致