数据库
首页 > 数据库> > MySQL:不在GROUP BY中

MySQL:不在GROUP BY中

作者:互联网

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

即随机y选择组x.可以通过设置@@ 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

标签:sql,mysql,phpmyadmin,mysql-error-1055
来源: https://codeday.me/bug/20190915/1806005.html