mysql only_full_group_by 的解决方案

only_full_group_by 是mysql用来做group by的合法性检查,有了它之后,就能想oracle那些大型数据库一样,能对使用了group出现的语义的错误进行排查

比如

mysql> create database test charset utf8mb4;

mysql> use test;

mysql> create table test(id int,count int);

mysql> insert into testvalues(1,1),(1,2),(2,3),(2,4);

mysql> select * from tt group by id;

+------+-------+

| id   | count |

+------+-------+

|    1 |     1 |

|    2 |     3 |

+------+-------+

2 rows in set (0.00 sec)

这样子的查询在oracle是不能成功的,因为有语义的问题

第 1 行出现错误:
ORA-00979: 不是 GROUP BY 表达式

这个就是only_full_group_by做的事啦,简单的说就是,有group的时候,只能查被group的字段,但有时候我们又需要其他的字段怎么办

1,要么去掉 only_full_group_by

2、可以使用any_value()这个函数。将非group的字段,且你需要的字段都查出来

时间: 2024-10-15 09:40:41

mysql only_full_group_by 的解决方案的相关文章

Mysql only_full_group_by以及其他关于sql_mode原因报错详细解决方案

(转载自:http://blog.csdn.net/wangyunfeis/article/details/77911704) Mysql only_full_group_by以及其他关于sql_mode原因报错详细解决方案 报错信息: 原因: 怎么查看呢: 解决办法1: 验证一下: 解决办法2 解决办法3 对于办法3解决的解释 对办法2办法3两种方法的说明 附上其他mode解释 对于其他mode说明 报错信息: 1.Error querying database.  Cause: com.my

Navicat MySQL连接Linux下MySQL的问题解决方案

Error1: 2003:Can't connect to MySQL server on 'localhost' 解决方法:关闭Linux的防火墙功能. Linux代码   #chkconfig iptables off #reboot Error2: 1130 - Host'ClientIP' is not allowed to connect to this MySQL server 解决方法:使用root用户登陆Linux,更改容许登陆的IP地址范围. Mysql代码   mysql>g

【转】高可用性、负载均衡的mysql集群解决方案

高可用性.负载均衡的mysql集群解决方案 一.mysql的市场占有率 二.mysql为什么受到如此的欢迎 三.mysql数据库系统的优缺点 四.网络服务器的需求 五.什么是mysql的集群 六.什么是负载均衡 七.mysql集群部署和实现方法 八.负载均衡的配置和测试 九.Mysql集群系统的测试(测试方案+测试脚本+测试结果分析) l mysql的市场占有率 MySQL是世界上最流行的开源数据库,已有1100多万的击活安装,每天超过五万的下 载.MySQL为全球开发者.DBA和IT管理者在可

安装opesntack mysql报错 解决方案

安装opesntack mysql报错 ERROR : Error appeared during Puppet run: 192.168.1.103_mysql.ppError: mysqladmin -u root  password 'f40e1dec1deb43d3' returned 1 instead of one of [0] # rpm -qa | grep -i mysqlmysql-server-5.1.71-1.el6.x86_64perl-DBD-MySQL-4.013-

[ZZ]MySQL高可用解决方案

MySQL高可用解决方案(MySQL HA Solution) 什么是高可用性? 很多公司的服务都是24小时*365天不间断的.比如Call Center.这就要求高可用性.再比如购物网站,必须随时都可以交易.那么当购物网的server挂了一个的时候,不能对业务产生任何影响.这就是高可用性. 高可用性2个问题: 如何共享数据或同步数据?如何处理failover? 解释failover,意思就是当服务器down掉,或者出现错误的时候,可以自动的切换到其他待命的服务器,不影响服务器上App的运行.

"this is incompatible with sql_mode=only_full_group_by"错误解决方案

一.原理层面 这个错误发生在mysql 5.7 版本及以上版本会出现的问题: mysql 5.7版本默认的sql配置是:sql_mode="ONLY_FULL_GROUP_BY",这个配置严格执行了"SQL92标准". 很多从5.6升级到5.7或更高版本时,为了语法兼容,大部分都会选择调整sql_mode,使其保持跟5.6一致,为了尽量兼容程序. 二.sql层面 在sql执行时,出现该原因: 简单来说就是:输出的结果是叫target list,就是select后面跟

常见的MYSQL高可用解决方案

MySQL 是一种关系数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL 软件采用了双授权政策(本词条"授权政策"),它分为社区版和商业版,由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库.由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境. 工具/原料 计算机操作系统 MySQL 方法/步骤 1 主从复制解决方案:这

MySQL高可用解决方案MMM

一.MMM简介: MMM即Multi-Master Replication Manager for MySQL:mysql多主复制管理器,基于perl实现,关于mysql主主复制配置的监控.故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),MMM也能对从服务器进行读负载均衡,所以可以用它来在一组用于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份.节点之间重新同步功能的脚本.MySQL本身没有提供replication failover的解决方案,通过MMM方案能实

mysql 10038错误解决方案

最近使用Navicat for MySQl访问远程mysql数据库,出现报错,显示“2003- Can't connect MySQL Server on 'localhost'(10038)“.于是拼命百度,终于找到解决办法. 方法一:关闭防火墙 1 首先明确自己提前开启了mysql服务的情况下遇到这个错误(这样就排除了因为mysql服务没开的原因). 方法一就是关闭防火墙:计算机——>打开控制面板——>系统和安全——> Windows防火墙——>打开或者关闭防火墙 然后关闭防火