MySQL : isn't in GROUP BY

标签 mysql sql phpmyadmin mysql-error-1055

该站点生成结果,但使用 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/

相关文章:

mysql - 多个 Between 子句

mysql - 从MySQL中的字符串数组中删除重复的单词

Phpmyadmin 未登录 (Mac)

sql - 可以将.SQL文件加载到Power bi吗?

phpmyadmin - 更新 PhpMyAdmin 中的所有行

database - 在 phpmyadmin 中重命名表名的前缀?

mysql - 我怎样才能启动mysql?

sql - 具有多个类似子选择的 mysql update 命令

c# - 向 MySQL 数据库写入异常时出现 Log4Net 异常

mysql - 删除 key :value from json string stored in a MySQL database