首页 > 数据库 >mysql group by

mysql group by

时间:2022-11-17 14:12:30浏览次数:35  
标签:GROUP mysql only mode MySQL group

Error 1140: In aggregated query without GROUP BY,sql_mode=only_full_group_by

 

MySQL 5.5.27上跑没有问题,在MySQL 5.7.24上就报了sql_mode=only_full_group_by的错误:
Error 1140: In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'sx.u.id';
this is incompatible with sql_mode=only_full_group_by

当SELECT一个不属于GROUP BY该列的列时,组中的该列可能有多个值,但结果中只有一个值的空间。因此,通常需要告知数据库如何将这些多个值组合成一个值。通常,这与聚合函数一样做COUNT(),SUM(),MAX()等...我说一般,因为大多数其他流行的数据库系统坚持这一点。但是,在版本5.7之前的MySQL中,默认行为更宽容,因为它不会抱怨然后随意选择任何值!它还有一个ANY_VALUE()如果你真的需要和以前一样的行为,可以用作这个问题的另一个解决方案的函数。这种灵活性是有代价的,因为它是非确定性的,所以除非你有充分的理由需要它,否则我不会推荐它。MySQL现在only_full_group_by默认打开设置是有充分理由的,所以最好习惯它并让你的查询符合它。

解决方法有两种

1.方式一

规范SQL,消除了任何歧义的可能性
例如:
SELECT name, age, SUM(points) FROM scores GROUP BY name //正确的

SELECT name, age, SUM(points) FROM scores //错误的(5.7之后)
2.方式二 (不需要在当前查询中进行任何更改)

1).打开配置文件

sudo vim /etc/mysql/my.cnf
2).将以下内容复制到my.cnf

[mysqld]
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
3).退出保存

:wq!
4).重新启动MySQL

sudo service mysql restart

标签:GROUP,mysql,only,mode,MySQL,group
From: https://www.cnblogs.com/zwvs/p/16899296.html

相关文章

  • 1.mysql-简介及安装
    1.简介数据库管理系统可以帮助我们实现对数据进行管理,我们只要学习对应的指令即可,目前市面上有很多数据库管理系统产品MySqlOracleSQlitePostgreSQL.........
  • mysql获取当前月,当前年天数(包含上个月,上一年天数)
     1、获取当前月天数:selectday(last_day(NOW())); 2、获取上一月天数:SELECTday(LAST_DAY(date_sub(curdate(),interval1MONTH)));  3、获取当前年的总......
  • MySql类型转换函数cast
    这两天处理一个现网的MySQL慢查询工单,学到了一个好用的MySQL函数:cast。事情是这样的:我们有两张表t_user和t_rule表,需要关联这两张表去查询,关联字段是t_user表的主键......
  • MySQL8 常用命令
    初始化(初始化之后的密码需要记一下,首次登录的时候需要用到)mysqld--initialize--console安装(服务名称可选,默认为MySQL)mysqldinstall服务名称启动服务netstar......
  • mysql-navicat主键递增清零
    在navicat上设置没有用必须使用sql语句清零MySQL自增ID起始值修改方法-52php-博客园(cnblogs.com)mysql自增主键清零方法-木西-Muxy-博客园(cnblogs.com)......
  • 厉害了!不懂自动化运维ansible你就out啦!批量部署web服务及mysql
    理论讲解step1为什么用它?提高效率。ansible可为多台服务器进行管理,自动部署服务,专为Unix系统开发的自由开源的配置和自动化工具。step2温馨提示:优点太多,就不一一介绍完啦......
  • zk,kafka,redis哨兵,mysql容器化
    1.zookeeper,kafka容器化1.1zookeeper+kafka单机docker模式dockerpullbitnami/zookeeper:3.6.3-debian-11-r46dockerpullbitnami/kafka:3.1.1-debian-11-r36dock......
  • docker-compose 安装多个mysql
    docker-compose.ymlversion:'3'services:mysql-1:restart:alwaysimage:mysql:5.7.28container_name:mysql-1volumes:#数据库......
  • 在MYSQL里,不能先select一个表的记录,再按此条件进行更新和删除同一个表的记录
    解决办法是,将select得到的结果,再通过中间表select一遍,这样就规避了错误,这个问题只出现于mysql,mssql和oracle不会出现此问题。MySQL根据字段删除重复值deletefromsites......
  • mysql8.0.31 mgr搭建
    1. mysql下载地址:MySQL::DownloadMySQLCommunityServer2. mgr文档:MySQL::MySQL8.0ReferenceManual::18GroupReplication3.安装实例:a) 解压ta......