今天學習sql注入的時候無意間使用了group by,來拆分表,卻發現以前常用的語法居然報錯了,于是只好百度,查到是一個配置值在新版本的MySQL中被更改了。
select @@sql_mode;中的一個ONLY_FULL_GROUP_BY被默認開啟了,再來從這篇文章中了解到這個配置的作用:ONLY_FULL_GROUP_BY。簡單來說就是:輸出的結果是叫target list,就是select后面跟著的字段,還有一個地方group by column,就是group by后面跟著的字段。由于開啟了ONLY_FULL_GROUP_BY的設置,所以如果一個字段沒有在target list和group by字段中同時出現,或者是聚合函數的值的話,那么這條sql查詢是被mysql認為非法的,會報錯誤。
至于具體例子,上面的那個插鏈接例有羅列。接著就是聚合函數了,mysql常用的聚合函數有下面這些:avg(),count(),max(),min(),sum()。
新聞熱點
疑難解答