MySQL获取字段存在的字段>表中的x次

时间:2010-10-01 23:56:22

标签: sql mysql mysql-error-1111

我正在尝试在MySQL中执行以下操作:

SELECT DISTINCT field
FROM table
WHERE COUNT(field) > 10

哪个失败了:1111 - 无效使用组功能(根据我的理解,你不能在where子句中使用COUNT等组函数?)

选择(区别)至少 N 行中存在的所有字段的正确方法是什么?这是我必须在外部做的事情,比如PHP?

谢谢!

1 个答案:

答案 0 :(得分:4)

使用:

SELECT DISTINCT field
  FROM table
HAVING COUNT(field) > 10

您不能在WHERE子句中使用子查询之外的聚合函数。这就是您需要使用HAVING子句的原因。另外keep in mind that COUNT counts non-null values ......

理想情况下,也应该有一个GROUP BY子句。但是MySQL is rather lax about that

比较所有

...你将不得不添加一个列出所有列GROUP BY子句 - 在这种情况下没有简写。然后将HAVING子句更改为COUNT(*) > 10