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

如何解決MySQL?this?is?incompatible?with?sql_mode=only_full_group_by問題

 更新時間:2024年11月20日 09:48:20   作者:喬丹搞IT  
MySQL的ONLY_FULL_GROUP_BY模式要求在使用GROUP?BY時,SELECT語句中引用的所有列必須在GROUP?BY子句中明確指定,或者是聚合函數(shù)的一部分,本文提供了修改SQL語句、使用聚合函數(shù)、禁用ONLY_FULL_GROUP_BY等解決方法,并強調了在禁用該模式時應評估其影響

MySQL this is incompatible with sql_mode=only_full_group_by

代碼示例:

在MySQL中,ONLY_FULL_GROUP_BY 是一個SQL模式設置,它要求在使用GROUP BY時,SELECT語句中引用的所有列必須在GROUP BY子句中明確指定,或者是聚合函數(shù)的一部分。

這個模式的目的是為了防止產生不確定的查詢結果。

如果你遇到了ONLY_FULL_GROUP_BY的錯誤,以下是一些解決方案:

1.修改SQL語句

  • 確保SELECT列表中的所有列要么包含在GROUP BY子句中,要么作為聚合函數(shù)的一部分。
  • 例如,如果你的查詢是這樣的:
SELECT column1, column2 FROM table GROUP BY column1;
  • 你需要將column2也加入到GROUP BY子句中
  • 或者對column2使用聚合函數(shù)
  • MAX(column2)SUM(column2)

2.使用聚合函數(shù)

  • 對于SELECT列表中不在GROUP BY子句中的列
  • 可以使用聚合函數(shù),如MAX(), MIN(), SUM(), COUNT()

3.禁用ONLY_FULL_GROUP_BY

  • 你可以在會話級別或全局級別禁用ONLY_FULL_GROUP_BY。
  • 這可以通過以下命令完成:
SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
  • 或者,你可以修改MySQL的配置文件(例如my.cnfmy.ini
  • 去掉ONLY_FULL_GROUP_BY
[mysqld]
sql_mode = NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
  • 修改配置文件后,需要重啟MySQL服務以使更改生效。

4.使用ANY_VALUE()函數(shù)

  • ANY_VALUE()函數(shù)可以用來選擇每個分組的任意值
  • 這在某種程度上可以繞過ONLY_FULL_GROUP_BY的限制

5.永久修改sql_mode

  • 在某些情況下,如果你不希望每次重啟MySQL服務后都要重新設置sql_mode,你可以將更改永久化到MySQL的配置文件中。
  • 請注意,禁用ONLY_FULL_GROUP_BY可能會讓你的查詢結果變得不確定,因為MySQL將不再強制要求GROUP BY子句包含所有非聚合列。
  • 因此,在禁用這個模式之前,最好先評估一下它對你的查詢邏輯和結果的影響。

如果你正在使用MySQL 8.0或更高版本,并且嘗試修改sql_mode時遇到了問題,比如出現(xiàn)了錯誤:

ERROR 1231 (42000): Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'

  • 這是因為在MySQL 8.0及以上版本中,NO_AUTO_CREATE_USER已經被移除。
  • 在這種情況下,你需要從sql_mode中移除這個值。
  • 在處理這個問題時,建議先嘗試修改SQL語句以符合ONLY_FULL_GROUP_BY的要求,因為這是最安全的做法,可以避免潛在的數(shù)據(jù)一致性問題。
  • 如果這不可能或者不切實際,那么再考慮禁用ONLY_FULL_GROUP_BY

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • MySQL分庫分表后路由策略設計詳情

    MySQL分庫分表后路由策略設計詳情

    這篇文章主要介紹了MySQL分庫分表后路由策略設計詳情,分庫分表后設計到的第一個問題就是,如何選擇路由key,應該如何對key進行路由
    2022-08-08
  • MySQL嵌套事務所遇到的問題

    MySQL嵌套事務所遇到的問題

    這篇文章主要介紹了MySQL嵌套事務所遇到的問題的相關資料,需要的朋友可以參考下
    2017-02-02
  • SQL實現(xiàn)Excel的10個常用功能的示例詳解

    SQL實現(xiàn)Excel的10個常用功能的示例詳解

    SQL,數(shù)據(jù)分析崗的必備技能,你可以不懂Python,R,不懂可視化,不懂機器學習。但SQL,你必須懂。本文為大家總結了SQL實現(xiàn)Excel的10個常用功能的示例代碼,感興趣的可以了解一下
    2022-07-07
  • sql語句示例之case?when作為where條件

    sql語句示例之case?when作為where條件

    這篇文章主要給大家介紹了關于sql語句示例之case?when作為where條件的相關資料,在SQL語句中CASE WHEN子句是根據(jù)條件表達式的結果來執(zhí)行不同的邏輯操作,它使用在WHERE子句中,以根據(jù)特定的條件在查詢結果中過濾數(shù)據(jù),需要的朋友可以參考下
    2023-08-08
  • Mysql去重的幾種方式分步講解

    Mysql去重的幾種方式分步講解

    SQL去重是數(shù)據(jù)分析工作中比較常見的一個場景,下面這篇文章主要給大家介紹了關于SQL去重的3種實用方法的相關資料,文中通過圖文以及實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • MySQL AUTO_INCREMENT 主鍵自增長的實現(xiàn)

    MySQL AUTO_INCREMENT 主鍵自增長的實現(xiàn)

    本文主要介紹了MySQL AUTO_INCREMENT 主鍵自增長的實現(xiàn),每增加一條記錄,主鍵會自動以相同的步長進行增長,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • MYSQL插入處理重復鍵值的幾種方法

    MYSQL插入處理重復鍵值的幾種方法

    當unique列在一個UNIQUE鍵上插入包含重復值的記錄時,默認insert的時候會報1062錯誤,MYSQL有三種不同的處理方法,下面我們分別介紹。
    2012-09-09
  • My Sql 1067錯誤與編碼問題的解決方案

    My Sql 1067錯誤與編碼問題的解決方案

    My Sql 大部分都是用綠色版(解壓版) 然后注冊服務簡單方便,但是配置文件也很讓人糾結,下面小編給大家?guī)砹薓y Sql 1067錯誤與編碼問題的解決方案,感興趣的朋友參考下吧
    2016-11-11
  • mysql id從1開始自增 快速解決id不連續(xù)的問題

    mysql id從1開始自增 快速解決id不連續(xù)的問題

    這篇文章主要介紹了mysql id從1開始自增 快速解決id不連續(xù)的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • MySQL 邏輯備份與恢復測試的相關總結

    MySQL 邏輯備份與恢復測試的相關總結

    數(shù)據(jù)庫邏輯備份就是備份軟件按照我們最初所設計的邏輯關系,以數(shù)據(jù)庫的邏輯結構對象為單位,將數(shù)據(jù)庫中的數(shù)據(jù)按照預定義的邏輯關聯(lián)格式一條一條生成相關的文本文件,以達到備份的目的。本文將具體介紹MySQL 邏輯備份的相關概念及如何做恢復測試。
    2021-05-05

最新評論