欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql高版本(8.0+)group_by報(bào)錯(cuò)的處理方法

 更新時(shí)間:2023年09月03日 16:21:29   作者:*鄭*  
本文主要介紹了mysql高版本(8.0+)group_by報(bào)錯(cuò)的處理方法,這個(gè)錯(cuò)誤一般發(fā)生在mysql 5.7以及 5.7以上的版本中,本文就來(lái)介紹一下兩種解決方法,感興趣的可以了解一下

1. 原因

這個(gè)錯(cuò)誤一般發(fā)生在mysql 5.7以及 5.7以上的版本中,其原因是mysql的默認(rèn)配置中,sql_mode=“ONLY_FULL_GROUP_BY” 這個(gè)配置嚴(yán)格執(zhí)行了 ‘SQL92標(biāo)準(zhǔn)’,查詢字段沒(méi)有在group by 字段后同時(shí)出現(xiàn),那么sql語(yǔ)句就不合法,就會(huì)拋出錯(cuò)誤

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'xxx' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

這是由于MySQL高版本默認(rèn)啟用了sql_mode的only_full_group_by模式,對(duì)于GROUP BY操作,要求SELECT語(yǔ)句中的字段必須出現(xiàn)在GROUP BY子句中或者使用聚合函數(shù)進(jìn)行處理。否則就會(huì)報(bào)上述錯(cuò)誤。

2. 處理方法

連接mysql庫(kù),執(zhí)行一下語(yǔ)句,查看sql_mode

select @@GLOBAL.sql_mode;

2.1 臨時(shí)方法,重啟后失效

SET GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';

2.2 修改配置my.ini文件

在[mysqld]下面添加以下代碼

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

3. 對(duì)查詢結(jié)果中的字段應(yīng)用聚合函數(shù)

若不能修改MySQL的配置文件,或者需要在特定場(chǎng)景使用原始的sql_mode值,我們也可以嘗試在查詢語(yǔ)句中對(duì)未出現(xiàn)在GROUP BY子句中的字段應(yīng)用聚合函數(shù)來(lái)解決報(bào)錯(cuò)問(wèn)題。

例如:

SELECT user_id, SUM(score) FROM scores GROUP BY user_id;

該語(yǔ)句會(huì)報(bào)錯(cuò),因?yàn)镾ELECT語(yǔ)句中的score字段未出現(xiàn)在GROUP BY子句中。但是,我們可以嘗試使用聚合函數(shù):

SELECT user_id, MAX(score) FROM scores GROUP BY user_id;

該語(yǔ)句中的score字段被應(yīng)用了MAX聚合函數(shù),這樣就符合了only_full_group_by模式的要求,不會(huì)報(bào)錯(cuò)。

示例

下面提供兩個(gè)具體的示例來(lái)展示如何使用上述解決方案。假設(shè)我們有如下的scores數(shù)據(jù)表:

id   user_id   score
1    100      88
2    100      93
3    101      73
4    102      85
5    102      91

示例1:修改sql_mode參數(shù)值

我們可以通過(guò)如下步驟來(lái)修改MySQL的sql_mode參數(shù):

打開(kāi)MySQL的配置文件my.cnf或my.ini。

找到[mysqld]節(jié)點(diǎn)下的sql_mode參數(shù)(可能會(huì)有多個(gè))。

將其值修改為:sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION。

保存文件并重啟MySQL服務(wù)。

使用如下SQL查詢語(yǔ)句,測(cè)試是否能正確查詢出score字段的平均值:

SELECT AVG(score) FROM scores GROUP BY user_id;

示例2:使用聚合函數(shù)

在不修改MySQL的sql_mode參數(shù)的情況下,我們可以改變查詢語(yǔ)句,使用聚合函數(shù)來(lái)解決only_full_group_by模式帶來(lái)的限制。

例如,下列SQL語(yǔ)句查詢出每個(gè)用戶的最小成績(jī):

SELECT user_id, MIN(score) FROM scores GROUP BY user_id;

在這個(gè)查詢語(yǔ)句中,score字段被應(yīng)用了MIN聚合函數(shù),符合only_full_group_by模式的要求。因此可以正常執(zhí)行,并正確返回結(jié)果。

到此這篇關(guān)于mysql高版本(8.0+)group_by報(bào)錯(cuò)的處理方法的文章就介紹到這了,更多相關(guān)mysql group_by報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java設(shè)計(jì)模式之原型模式的示例詳解

    Java設(shè)計(jì)模式之原型模式的示例詳解

    原型模式(Prototype Pattern)指使用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且通過(guò)拷貝這些原型創(chuàng)建新的對(duì)象。本文將通過(guò)案例詳細(xì)講解一下原型模式,感興趣的可以了解一下
    2022-02-02
  • 如何利用Java獲取當(dāng)天的開(kāi)始和結(jié)束時(shí)間

    如何利用Java獲取當(dāng)天的開(kāi)始和結(jié)束時(shí)間

    這篇文章主要介紹了如何使用Java?8的LocalDate和LocalDateTime類獲取指定日期的開(kāi)始和結(jié)束時(shí)間,展示了如何通過(guò)這些類進(jìn)行日期和時(shí)間的處理,從而簡(jiǎn)化了日期時(shí)間操作,需要的朋友可以參考下
    2025-02-02
  • Spring session整合到Redis過(guò)程解析

    Spring session整合到Redis過(guò)程解析

    這篇文章主要介紹了Spring session整合到Redis過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java?windows環(huán)境構(gòu)建圖文教程

    Java?windows環(huán)境構(gòu)建圖文教程

    這篇文章主要為大家介紹了Java?windows環(huán)境構(gòu)建圖文教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>
    2023-12-12
  • Java中super和this的用法詳解

    Java中super和this的用法詳解

    這篇文章主要介紹了Java中super和this的用法詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • SpringBoot實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫(xiě)分離的3種方法小結(jié)

    SpringBoot實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫(xiě)分離的3種方法小結(jié)

    為了提高系統(tǒng)的讀寫(xiě)性能和可用性,讀寫(xiě)分離是一種經(jīng)典的數(shù)據(jù)庫(kù)架構(gòu)模式,在SpringBoot應(yīng)用中,有多種方式可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫(xiě)分離,本文將介紹三種主實(shí)現(xiàn)方案,大家可以根據(jù)需要自行選擇
    2025-04-04
  • springboot相關(guān)面試題匯總詳解

    springboot相關(guān)面試題匯總詳解

    這篇文章主要介紹了springboot相關(guān)面試題匯總詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Java如何使用poi生成簡(jiǎn)單word文檔并導(dǎo)出

    Java如何使用poi生成簡(jiǎn)單word文檔并導(dǎo)出

    這篇文章主要介紹了Java如何使用poi生成簡(jiǎn)單word文檔并導(dǎo)出問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 關(guān)于Spring中@Transactional事務(wù)回滾的注意事項(xiàng)

    關(guān)于Spring中@Transactional事務(wù)回滾的注意事項(xiàng)

    這篇文章主要介紹了關(guān)于Spring中@Transactional事務(wù)回滾的注意事項(xiàng),回滾(Rollback)指的是程序或數(shù)據(jù)處理錯(cuò)誤,將程序或數(shù)據(jù)恢復(fù)到上一次正確狀態(tài)的行為?;貪L包括程序回滾和數(shù)據(jù)回滾等類型,需要的朋友可以參考下
    2023-05-05
  • Java模擬實(shí)現(xiàn)QQ三方登錄(單點(diǎn)登錄2.0)

    Java模擬實(shí)現(xiàn)QQ三方登錄(單點(diǎn)登錄2.0)

    這篇文章主要為大家詳細(xì)介紹了Java模擬實(shí)現(xiàn)QQ三方登錄,單點(diǎn)登錄2.0,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06

最新評(píng)論