0

我收到了这个错误,我不确定如何处理它。简单的解释将不胜感激。错误:

1140:如果没有 GROUP BY 子句,将 GROUP 列 (MIN(),MAX(),COUNT(),...) 与没有 GROUP 列的混合是非法的 - SELECT email, COUNT(*) AS records_foundFROM ( emails) WHERE email= '电子邮件地址'

4

3 回答 3

1

除非包含 group by 子句,否则不能将聚合函数(如 count(*))与非聚合列(如电子邮件)一起使用。我假设您打算尝试获取 emails 表中每封不同电子邮件的计数,这需要在您的查询中添加一个 group by 子句,如下所示:

select email, count(*) as records_found
from (emails) 
where email = 'Email Address'
group by email

鉴于您使用的 where 子句将确保单个电子邮件不同,您可能想知道为什么需要它 - 您也可以简单地在电子邮件列周围添加一个聚合函数,因为您知道它是不同的:

select max(email), count(*) as records_found
from (emails) 
where email = 'Email Address'
于 2009-11-11T01:35:58.280 回答
1

如果您想使用聚合函数(MIN、MAX、COUNT),您需要向 MySQL 提供有关在哪些列上执行聚合的信息。例如,在您的情况下,您应该使用

SELECT email, COUNT(*) AS records_found FROM (emails) GROUP BY email 

要获取每个电子邮件地址的行数,或者如果您只是查找具有给定地址的行数,请执行以下操作:

SELECT COUNT(*) AS records_found FROM (emails) WHERE email = 'Email Address'
于 2009-11-11T01:36:27.053 回答
0

您在输出中有电子邮件,但您没有按它分组。您很可能希望从输出中删除 email 列,因为您在 WHERE 子句中有它:

SELECT COUNT(*) AS records_found FROM (emails) WHERE email = 'Email Address'

于 2009-11-11T01:36:51.030 回答