Linux下mysql進行group by ,order by查詢報錯
阿新 • • 發佈:2018-11-27
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型別就可以解決了