1. 程式人生 > >Linux下mysql進行group by ,order by查詢報錯

Linux下mysql進行group by ,order by查詢報錯

select userId,count(movieId)
from ratings
group by userId
order by userId

報錯:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

mysql版本:5.7.24-0ubuntu0.16.04.1 (Ubuntu)

解決方案:在/etc/mysql/mysql.conf.d/mysqld.cnf中修改或新增下面:

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

新增之前會說mysqld.cnf配置檔案是隻讀不能修改,需要修改許可權,

進入到輸入mysqld.cnf所在的資料夾下輸入

sudo chmod 777 mysqld.cnf

然後完成sql_mode的修改,注意還要恢復許可權

sudo chmod 644 mysqld.cnf

然後我又重啟了一下mysql,再輸入上面命令就不會報錯了

--------------------------------華麗麗的-----------------------------------------------------------------------------------------------------------------------

但是order by 並沒有按userid順序出現,查了網上解釋原因是因為userid如果是varchar,則會按照varchar排序,改成int型別就可以解決了