mysql 分組後 取最大值的問題(已解決)

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)

圖片展示:

運行結果:

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