最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年09月13日 10:28:40   作者:Lenix  
這篇文章主要給大家介紹了關于Mysql升級到5.7后遇到的group by查詢問題的解決方法,文中通過示例代碼介紹的非常詳細,對同樣遇到這個問題的朋友們具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

發(fā)現問題

最近在將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的規(guī)則,only fully group by,也就是說在執(zhí)行的時候先分組,根據查詢的字段(select的字段)在分組的內容中取出,所以查詢的字段全部都應該在group by分組條件內;一種情況例外,查詢字段中如果含有聚合函數的字段不用包含在group by中,就像我上面的count(id)。

后來發(fā)現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即可正常執(zhí)行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種方法。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • Mysql官方性能測試工具mysqlslap的使用簡介

    Mysql官方性能測試工具mysqlslap的使用簡介

    mysqlslap隨著MySQL安裝的時候就自動安裝好了,而且 mysqlslap 把很多的自定義測試的功能封裝到了外部,使用者只需要在外部提供 SQL 語句的腳本就可以自定義測試語句,本文將簡單介紹該工具的使用
    2021-05-05
  • Mysqli基礎知識

    Mysqli基礎知識

    本文給大家講述的是Mysqli的基礎知識,非常的淺顯易懂,有需要的小伙伴就可以參考下。
    2015-07-07
  • MySQL如何使用union all獲得并集排序

    MySQL如何使用union all獲得并集排序

    這篇文章主要介紹了MySQL如何使用union all獲得并集排序,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • Mysql主從復制與讀寫分離圖文詳解

    Mysql主從復制與讀寫分離圖文詳解

    這篇文章主要給大家介紹了關于Mysql主從復制與讀寫分離的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • idea中使用mysql的保姆級教程(超詳細)

    idea中使用mysql的保姆級教程(超詳細)

    我們開發(fā)時經常需要用到一些客戶端去訪問數據庫查詢、更新數據等操作,下面這篇文章主要給大家介紹了關于idea中使用mysql的保姆級教程,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • 利用Sqoop實現MySQL數據導入Hive的全流程

    利用Sqoop實現MySQL數據導入Hive的全流程

    在大數據領域中,MySQL 和 Hive 是兩種常見的存儲工具,MySQL 適合事務處理,而 Hive 則是用于離線數據分析的利器,本文將全面講解如何使用 Sqoop 將 MySQL 數據導入 Hive 的完整流程,包括環(huán)境配置、具體操作步驟以及最佳實踐和常見問題解決方案,需要的朋友可以參考下
    2024-12-12
  • MySQL InnoDB引擎ibdata文件損壞/刪除后使用frm和ibd文件恢復數據

    MySQL InnoDB引擎ibdata文件損壞/刪除后使用frm和ibd文件恢復數據

    mysql的ibdata文件被誤刪、被惡意修改,沒有從庫和備份數據的情況下的數據恢復,不能保證數據庫所有表數據的100%恢復,目的是盡可能多的恢復,下面是具體的操作方法
    2025-03-03
  • mysql 有關“InnoDB Error ib_logfile0 of different size”錯誤

    mysql 有關“InnoDB Error ib_logfile0 of different size”錯誤

    mysql 有關“InnoDB Error ib_logfile0 of different size”錯誤的解決方法,需要的朋友可以參考下。
    2011-06-06
  • MySQL中USING 和 HAVING 用法實例簡析

    MySQL中USING 和 HAVING 用法實例簡析

    這篇文章主要介紹了MySQL中USING 和 HAVING 用法,結合實例形式簡單分析了mysql中USING 和 HAVING的功能、使用方法及相關操作注意事項,需要的朋友可以參考下
    2019-08-08
  • SQL?中?HAVING?常見的使用方法

    SQL?中?HAVING?常見的使用方法

    這篇文章主要介紹了SQL中HAVING常見的使用方法,文章通過圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09

最新評論

南乐县| 临泉县| 龙口市| 武清区| 广昌县| 射阳县| 新巴尔虎右旗| 宜阳县| 云梦县| 应城市| 枝江市| 浠水县| 微山县| 喀喇沁旗| 池州市| 五河县| 南充市| 仙桃市| 巴彦淖尔市| 浦东新区| 历史| 东台市| 稷山县| 梅州市| 芜湖市| 六盘水市| 曲水县| 临海市| 清镇市| 宁乡县| 大荔县| 文水县| 内乡县| 四会市| 余庆县| 莎车县| 香河县| 太谷县| 双城市| 灵璧县| 项城市|