我有这个
$query = mysql_query("SELECT *, COUNT(*) FROM impressions WHERE pub_tag = '$pub_tag' AND pub_id = '$pub_id' AND month = '$date' GROUP BY country");
while($stat_cont = mysql_fetch_array($query)) {
echo '[\''.$stat_cont['country'].'\', '.$stat_cont['COUNT(*)'].'],';
}
它显示没有任何也没有错误。删除WHERE后,它就可以了。
CREATE TABLE IF NOT EXISTS `impressions` (
`id` int(15) unsigned NOT NULL AUTO_INCREMENT,
`pub_id` int(10) unsigned NOT NULL,
`pub_tag` varchar(10) NOT NULL,
`time` int(10) unsigned NOT NULL,
`month` int(6) unsigned NOT NULL,
`ip` int(15) unsigned NOT NULL,
`country` varchar(100) NOT NULL,
`country_city` varchar(150) NOT NULL,
`country_region` varchar(100) NOT NULL,
`country_code` varchar(2) NOT NULL,
`revenue` float unsigned NOT NULL,
PRIMARY KEY (`id`)
) ;
答案 0 :(得分:0)
将您的查询放入变量echo
,以查看究竟发送给MySQL的内容。
$stmt = "SELECT ... ";
echo $stmt;
为聚合使用别名:
SELECT Country, COUNT(*) AS count ...
mysql_
函数已弃用。请不要在新代码中使用它们。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。
MySQL扩展了可能产生不良结果的GROUP BY
功能。最佳做法是不选择不在GROUP BY
答案 1 :(得分:0)
如果您想通过对“国家/地区”进行分组来获得结果,而不是在查询中提供“*”,请在select和group by中提供国家/地区。