该站点产生结果,但是使用SELECT COUNT和SELECT查询以及GROUP BY具有两个不同的结果计数。这可能是由于phpmyadmin中显示的错误,而不是网站上的错误。
查询:
SELECT count(DISTINCT `name`) as `numrows` FROM `users` WHERE `verified` = '1' SELECT `name`, `type`, `language`, `code` FROM `users` WHERE `verified` = '1' GROUP BY `name` ORDER BY `count` DESC LIMIT 0, 25
PhpMyAdmin提供以下错误:
1055-‘main.users.type’不在GROUP BY中
在阅读MySQL文档时,我仍不清楚必须解决的问题。我似乎无法掌握这一点。
您需要有一个完整的小组:
SELECT `name`, `type`, `language`, `code` FROM `users` WHERE `verified` = '1' GROUP BY `name`, `type`, `language`, `code` ORDER BY `count` DESC LIMIT 0, 25
SQL92要求select子句中的所有列(聚合除外)都是group by子句的一部分。SQL99稍微放松了此限制,并指出select子句中的所有列在功能上必须依赖于group by子句。MySQL默认情况下允许部分分组依据,这可能会产生不确定的答案,例如:
create table t (x int, y int); insert into t (x,y) values (1,1),(1,2),(1,3); select x,y from t group by x; +------+------+ | x | y | +------+------+ | 1 | 1 | +------+------+
即,为组x选择了随机y。可以通过设置@@ sql_mode来防止此行为:
set @@sql_mode='ONLY_FULL_GROUP_BY'; select x,y from t group by x; ERROR 1055 (42000): 'test.t.y' isn't in GROUP BY