mysql 禁用 ONLY_FULL_GROUP_BY,暫時解決錯誤(sql_mode=only_full_group_by)

森林蘑菇_mushroom發表於2018-08-10

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

相關文章