解决方法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