MySQL 5.7 上就報什麼 ORDER BY 的字段不在 SELECT 的列表中的 SQL 異常

 

看看下面這個 SQL 語句:

SELECT DISTINCT guid FROM table1 WHERE user=? ORDER BY id DESC

這個 SQL 語句在 MySQL 5.6 以及之前的版本都可以正確執行。但是跑到 MySQL 5.7 上就報什麼 ORDER BY 的字段不在 SELECT 的列表中的 SQL 異常。

解決的辦法是修改 MySQL 5.7 的 sql_mode 值,去掉 ONLY_FULL_GROUP_BY 這玩意。

可以直接在 my.cnf 配置的 [mysqld] 段增加如下配置並重啓 MySQL 即可:

 

sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE

 

轉載爲:https://www.oschina.net/question/12_2183893

 

總結:針對此問題,不建議修改,這個涉及到很多其他的庫,order by 的字段放到 select 列表中,是很正常的要求。根據業務需要可以在查詢的的字段後面補充order by字段。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章