2009-11-11 68 views
0

我得到了这个错误,我不知道如何使用它。简单的解释将不胜感激。错误:没有组列的组列混合

1140: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause - SELECT email , COUNT(*) AS records_found FROM (emails) WHERE email = 'Email Address'

回答

1

除非包含group by子句,否则不能对非聚合列(如电子邮件)使用聚合函数(如count(*))。我假设你正打算尝试并获得在邮件表中的每个不同的电子邮件的数量,这需要一个group by子句添加到您的查询,例如:

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

既然你使用的是where子句,这将确保一个明确的单一电子邮件,可能为什么它需要的是想知道 - 你可以或者简单地添加在email列聚合函数,以及因为你知道它是不同的:

select max(email), count(*) as records_found 
from (emails) 
where email = 'Email Address' 
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' 
0

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

SELECT COUNT(*)AS records_found FROM(电子邮件) WHERE电子邮件= '电子邮件地址'