今天在查询一条数据时,查找某张表里某字段数量>1,写了如下SQL。一直报错提示“1111 - Invalid use of group function”
#错误写法
SELECT *
FROM 表名
WHERE count(字段A)>1
GROUP BY 字段A
百思不得姐,问了下JAVA攻城狮,跟我说得用Having,不能用Where。
#正确写法
SELECT *
FROM 表名
GROUP BY 字段A
HAVING count(字段A) > 1;
但是我记得Where和Group By明明是可以一起用的,然后度娘了一下。结果如下:
1.Group by与Where是否可以一起使用? 可以。
where肯定在group by 之前。 先对select xx from xx的记录集合用where进行筛选,然后再使用group by 对筛选后的结果进行分组。
2.Group by与Where一起使用时,Where不能使用聚合函数,需要使用Having进行分组。
having只能在group by的面后,对分组后的结果进行筛选。
3.当一个语句同时出现了where、group by、having、order by的时候,执行顺序如下:
1).where对数据做筛选。
2).group by对where结果进行分组。
3).having对group by分组后的数据进行筛选。
4).order by针对group by的数据进行排序。