该站点生成结果,但使用 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' isn't in 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
关于MySQL : isn't in GROUP BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25800411/