mysql版本:5.65
測試表格ceshi如下:
sql要求:根據name分組取score的最大值,
SELECT id,`name`,max(score) FROM ceshi GROUP BY `name`
如果你的表格score字段是字符串類型,則SQL需要修改,將其轉化爲數值類型:
SELECT id,`name`,max(CAST(score AS SIGNED)) FROM ceshi GROUP BY `name`
運行結果如下:
2.提示:
如果出現報錯:which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mod
這是因爲mysql版本原因導致的,解決方法是打開mysql目錄下的my.ini配置文件:
將下面內容複製進去:
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
然後保存重啓數據庫即可;
重啓方法:
以管理員權限進入cmd,進入到mysql下的bin目錄,然後:
關閉數據庫:net stop mysql
啓動數據庫:net start mysql
3.補充:
還有一中寫法,略微複雜,但仍然可以實現分組後取最大值的需求,這邊貼出來給大家:
select a.* from ceshi a where not exists(select 1 from ceshi b where b.`name`=a.`name` and b.score>a.score)
圖片展示:
運行結果: