mysql 禁用 ONLY_FULL_GROUP_BY,暂时解决错误(sql_mode=only_full_group_by)

解决方法1-Duang

例1: 从 sql_mode 删除 ONLY_FULL_GROUP_BY:

mysql> SELECT @@sql_mode;
+---------------------------------------------------------------+
| @@sql_mode                                                    |
+---------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+---------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Query OK, 0 rows affected (0.02 sec)

mysql> SELECT @@sql_mode;
+--------------------------------------------+
| @@sql_mode                                 |
+--------------------------------------------+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
1 row in set (0.00 sec)
复制代码

例2: 向 sql_mode 增加 ONLY_FULL_GROUP_BY:

mysql> SELECT @@sql_mode;
+------------------------+
| @@sql_mode             |
+------------------------+
| NO_ENGINE_SUBSTITUTION |
+------------------------+
1 row in set (0.00 sec)

mysql> SET sql_mode=(SELECT CONCAT(@@sql_mode,',ONLY_FULL_GROUP_BY'));
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @@sql_mode;
+-------------------------------------------+
| @@sql_mode                                |
+-------------------------------------------+
| ONLY_FULL_GROUP_BY,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------+
1 row in set (0.00 sec)
复制代码
有时候,服务器掌握在别人手里,又不想找他的时候,可以用这种暂时的手段,解决这个数据库问题。

回头想了下,上面这个解决方法特别不可取! 既然人家加了这个东西,咱就该按照人家的规矩办事。不能瞎搞,搞怀孕了就不好处理了。

解决方法2 - 飘柔

  • 问题在于,使用GROUP BY 的时候,都是操作数据库a ,而你查询还有数据库b, 那只要把数据库b的字段包养起来就可以了,这样any_value(b.xiaosan),或者这样any_value(b.xiaosi),或者......emmmmmmmm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值