看看下面這個 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字段。