国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

Mysql升級到5.7后遇到的groupby查詢問題解決

來源:懂視網 責編:小采 時間:2020-11-09 20:30:58
文檔

Mysql升級到5.7后遇到的groupby查詢問題解決

Mysql升級到5.7后遇到的groupby查詢問題解決:發現問題 最近在將mysql升級到mysql 5.7后,進行一些group by 查詢時,比如下面的 SELECT *, count(id) as count FROM `news` GROUP BY `group_id` ORDER BY `inputtime` DESC LIMIT 20 就會報如下錯誤: SELECT
推薦度:
導讀Mysql升級到5.7后遇到的groupby查詢問題解決:發現問題 最近在將mysql升級到mysql 5.7后,進行一些group by 查詢時,比如下面的 SELECT *, count(id) as count FROM `news` GROUP BY `group_id` ORDER BY `inputtime` DESC LIMIT 20 就會報如下錯誤: SELECT

發現問題

最近在將mysql升級到mysql 5.7后,進行一些group by 查詢時,比如下面的

SELECT *, count(id) as count FROM `news` GROUP BY `group_id` ORDER BY `inputtime` DESC LIMIT 20

就會報如下錯誤:

SELECT list is not in GROUP BY clause and contains nonaggregated column ‘news.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by.

原因分析

原因是mysql 5.7 模式中。默認啟用了ONLY_FULL_GROUP_BY。

ONLY_FULL_GROUP_BY是MySQL提供的一個sql_mode,通過這個sql_mode來提供SQL語句GROUP BY合法性的檢查。

http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_only_full_group_by

this is incompatible with sql_mode=only_full_group_by這句話提示了這違背了mysql的規則,only fully group by,也就是說在執行的時候先分組,根據查詢的字段(select的字段)在分組的內容中取出,所以查詢的字段全部都應該在group by分組條件內;一種情況例外,查詢字段中如果含有聚合函數的字段不用包含在group by中,就像我上面的count(id)。

后來發現Order by排序條件的字段也必須要在group by內,排序的字段也是從分組的字段中取出。 不明白的可以去看一下。

解決辦法:

1.set@@sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

去掉ONLY_FULL_GROUP_BY即可正常執行sql.

2. 不去ONLY_FULL_GROUP_BY, 時 select字段必須都在group by分組條件內(含有函數的字段除外)。(如果遇到order by也出現這個問題,同理,order by字段也都要在group by內)。

3.利用ANY_VALUE()這個函數 https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_any-value

This function is useful for GROUP BY queries when the ONLY_FULL_GROUP_BY SQL mode is enabled, for cases when MySQL rejects a query that you know is valid for reasons that MySQL cannot determine. The function return value and type are the same as the return value and type of its argument, but the function result is not checked for the ONLY_FULL_GROUP_BY SQL mode.

如上面的sql語句可寫成

SELECT ANY_VALUE(id)as id,ANY_VALUE(uid) as uid ,ANY_VALUE(username) as username,ANY_VALUE(title) as title,ANY_VALUE(author) as author,ANY_VALUE(thumb) as thumb,ANY_VALUE(description) as description,ANY_VALUE(content) as content,ANY_VALUE(linkurl) as linkurl,ANY_VALUE(url) as url,ANY_VALUE(group_id) as group_id,ANY_VALUE(inputtime) as inputtime, count(id) as count FROM `news` GROUP BY `group_id` ORDER BY ANY_VALUE(inputtime) DESC LIMIT 20

我選用的是第3種方法。

總結

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Mysql升級到5.7后遇到的groupby查詢問題解決

Mysql升級到5.7后遇到的groupby查詢問題解決:發現問題 最近在將mysql升級到mysql 5.7后,進行一些group by 查詢時,比如下面的 SELECT *, count(id) as count FROM `news` GROUP BY `group_id` ORDER BY `inputtime` DESC LIMIT 20 就會報如下錯誤: SELECT
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产毛片久久久久久国产毛片 | 亚洲一区二区在线成人 | 欧美国产精品一区二区免费 | heyzo国产| 亚洲另类网 | 欧美一区二区日韩一区二区 | 亚洲天堂一区二区三区 | 国产精品欧美激情在线播放 | 91精品啪国产在线观看免费牛牛 | 国产欧美日韩第一页 | 精品在线观看国产 | 免费国产视频 | 日韩在线视频精品 | 欧洲一区二区三区在线观看 | 亚洲激情综合 | 不卡二区| 国产全黄a一级毛片视频 | 国产精品久久久久久一级毛片 | 麻豆成人在线 | 国产综合一区二区 | 精品一区二区三区四区 | 久久香蕉影视 | 国产免费精彩视频 | 免费在线观看国产 | 国产视频一区二区三区四区 | 久久国产午夜一区二区福利 | 日韩欧美在线综合网高清 | 91麻精品国产91久久久久 | 最新精品在线视频 | 国产99久久精品一区二区 | 成人精品一区二区三区 | 国产日本在线 | 在线日韩欧美一区二区三区 | 怡红院一区二区三区 | 欧美国产日韩在线观看 | 国产一区 在线播放 | 一97日本道伊人久久综合影院 | 亚洲精品毛片久久久久久久 | 日韩一级精品久久久久 | 久久伊人精品一区二区三区 | 亚洲国产天堂久久九九九 |