SQL语句中,Group by与Where共同使用时的注意事项。总提示“1111 - Invalid use of group function”

今天在查询一条数据时,查找某张表里某字段数量>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的数据进行排序。

发布了63 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/woshiyigerenlaide/article/details/103558595