MySQL查询计数()

时间:2012-08-06 23:40:11

标签: php mysql

当我尝试此查询时:

mysql_query("SELECT COUNT(id) AS `unique`, impressions 
             FROM statistic 
             WHERE FROM_UNIXTIME(time_add, '%d.%m.%Y') = '" . date('d.m.Y', time()) . "'") or die(mysql_error());

我看到了以下错误消息:

  

如果没有GROUP BY子句,混合GROUP列(MIN(),MAX(),COUNT(),...)没有GROUP列是非法的

我不知道这个错误是什么,我认为有人可以在这里帮助我:)。

3 个答案:

答案 0 :(得分:1)

WHERE子句

之后添加此行
mysql_query("SELECT COUNT(id) AS `unique`, impressions 
             FROM statistic 
             WHERE FROM_UNIXTIME(time_add, '%d.%m.%Y') = '" . date('d.m.Y', time()) . "'
             GROUP BY impressions") or die(mysql_error());

答案 1 :(得分:1)

count是一个组函数,除非在group子句中提到,否则你不能选择另一个有count的列。

  mysql_query("SELECT COUNT(id) AS `unique`, impressions FROM 
statistic WHERE FROM_UNIXTIME(time_add, '%d.%m.%Y') = '" . date('d.m.Y', time()) . "' 
GROUP BY impressions")

答案 2 :(得分:1)

当您在COUNT, MIN, MAX, AVG聚合函数中使用列时,您必须在GROUP BY子句中提及该列,如下所示:

mysql_query("SELECT COUNT(id) AS `unique`, impressions FROM statistic WHERE FROM_UNIXTIME(time_add, '%d.%m.%Y') = '" . date('d.m.Y', time()) . "' GROUP BY id") or die(mysql_error());

P.S。不推荐使用mysql_ *函数,使用PDO或MySQLi函数更安全,以避免sql注入和其他sql违规。