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

mysql不支持group by的解決方法小結

 更新時間:2020年02月07日 17:10:27   投稿:mdxy-dxy  
下載安裝的是最新版的mysql5.7.x版本,默認是開啟了 only_full_group_by 模式的,但開啟這個模式后,原先的 group by 語句就報錯,然后又把它移除了

下載安裝的是最新版的mysql5.7.x版本,默認是開啟了 only_full_group_by 模式的,但開啟這個模式后,原先的 group by 語句就報錯,然后又把它移除了。

一旦開啟 only_full_group_by ,感覺,group by 將變成和 distinct 一樣,只能獲取受到其影響的字段信息,無法和其他未受其影響的字段共存,這樣,group by 的功能將變得十分狹窄了

only_full_group_by 模式開啟比較好。

因為在 mysql 中有一個函數(shù): any_value(field) 允許,非分組字段的出現(xiàn)(和關閉 only_full_group_by 模式有相同效果)。

具體出錯提示:

[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

1.1. 1、查看sql_mode

select @@global.sql_mode;

1.2. 查詢出來的值為:

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

2、去掉ONLY_FULL_GROUP_BY,重新設置值。

select @@global.sql_mode;

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';
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

2.1. 3、上面是改變了全局sql_mode,對于新建的數(shù)據(jù)庫有效。對于已存在的數(shù)據(jù)庫,則需要在對應的數(shù)據(jù)下執(zhí)行:

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';  

解決辦法大致有兩種:

一:在sql查詢語句中不需要group by的字段上使用any_value()函數(shù)
這種對于已經(jīng)開發(fā)了不少功能的項目不太合適,畢竟要把原來的sql都給修改一遍

3.1.

二:修改my.cnf(windows下是my.ini)配置文件,刪掉only_full_group_by這一項
若我們項目的mysql安裝在ubuntu上面,找到這個文件打開一看,里面并沒有sql_mode這一配置項,想刪都沒得刪。

當然,還有別的辦法,打開mysql命令行,執(zhí)行命令

select @@sql_mode;
這樣就可以查出sql_mode的值,復制這個值,在my.cnf中添加配置項(把查詢到的值刪掉only_full_group_by這個選項,其他的都復制過去):

sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;
如果 [mysqld] 這行被注釋掉的話記得要打開注釋。然后重重啟mysql服務

注:使用命令

set sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

這樣可以修改一個會話中的配置項,在其他會話中是不生效的?!?nbsp;

如果上面的不夠清楚可以參考下面的語句

進入mysql命令行 執(zhí)行如下兩句語句

set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

但是當重啟mysql 問題又會復現(xiàn)

找到my.cnf,編輯它~把以下命令放到合適位置,重啟mysql 服務,OK~報錯沒啦~

[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

注意 sql_model那句話 一定要放在[mysqld] 內容區(qū)域

mysql5.7不支持group by的解決辦法

1、查看sql_mode

select @@global.sql_mode

查詢出來的值為:

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

2、去掉ONLY_FULL_GROUP_BY,重新設置值。

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

linux 下mysql5.7+使用group by、order by報錯ONLY_FULL_GROUP_BY不修改配置文件

1.進入mysql
2.查詢出sql_mode:

SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;
SELECT @@sql_mode;

發(fā)現(xiàn)前面都有ONLY_FULL_GROUP_BY

3. 在命令行中輸入
set @@GLOBAL.sql_mode=(select replace(@@GLOBAL.sql_mode,‘ONLY_FULL_GROUP_BY',''));
以上三個sql_home都設置一遍,

4.退出mysql重新進入查看sql_mode; 

 

 到這里基本上就差不多了。

相關文章

  • Mysql實現(xiàn)遞歸樹查詢的使用示例

    Mysql實現(xiàn)遞歸樹查詢的使用示例

    Mysql我們可以使用遞歸查詢來構建一個遞歸樹,本文就來介紹一下Mysql實現(xiàn)遞歸樹查詢的使用示例,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • MySQL中rank() over、dense_rank() over、row_number() over用法介紹

    MySQL中rank() over、dense_rank() over、row_number()&n

    本文主要介紹了MySQL中rank() over、dense_rank() over、row_number() over用法介紹,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 新手把mysql裝進docker中碰到的各種問題

    新手把mysql裝進docker中碰到的各種問題

    這篇文章主要給大家介紹了新手第一次把mysql裝進docker中可能碰到的各種問題,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mysql具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • 阿里云Centos 7.5安裝Mysql的教程

    阿里云Centos 7.5安裝Mysql的教程

    這篇文章主要介紹了阿里云Centos 7.5安裝Mysql的教程,需要的朋友可以參考下
    2017-07-07
  • CentOS6.9+Mysql5.7.18源碼安裝詳細教程

    CentOS6.9+Mysql5.7.18源碼安裝詳細教程

    CentOS6.9+Mysql5.7.18源碼安裝,以下操作均在root用戶下執(zhí)行。下面通過本教程給大家詳細介紹CentOS6.9+Mysql5.7.18源碼安裝方法,需要的的朋友參考下吧
    2017-06-06
  • 在MySQL中同時查找兩張表中的數(shù)據(jù)的示例

    在MySQL中同時查找兩張表中的數(shù)據(jù)的示例

    這篇文章主要介紹了在MySQL中同時查找兩張表中的數(shù)據(jù)的示例,即一次查詢操作返回兩張表的結果,需要的朋友可以參考下
    2015-07-07
  • MySQL將CSV文件快速導入MySQL中的實現(xiàn)

    MySQL將CSV文件快速導入MySQL中的實現(xiàn)

    本文主要介紹了MySQL將CSV文件快速導入MySQL中的實現(xiàn),主要包括navicat、workbench等軟件中的導入向導手動導入或使用load data infile命令導入,感興趣的可以了解一下
    2023-11-11
  • MYSQL刪除表中的指定ID數(shù)據(jù)

    MYSQL刪除表中的指定ID數(shù)據(jù)

    有些時候我們需要刪除表中指定ID數(shù)據(jù),主要是接下模糊刪除,需要的朋友可以參考下
    2013-01-01
  • mysql數(shù)據(jù)庫sql優(yōu)化原則(經(jīng)驗總結)

    mysql數(shù)據(jù)庫sql優(yōu)化原則(經(jīng)驗總結)

    這里的原則 只是針對mysql數(shù)據(jù)庫,其他的數(shù)據(jù)庫 某些是殊途同歸,某些還是存在差異。我總結的也是mysql普遍的規(guī)則,對于某些特殊情況得特殊對待。在構造sql語句的時候養(yǎng)成良好的習慣
    2014-03-03
  • MySQL 使用自定義變量進行查詢優(yōu)化

    MySQL 使用自定義變量進行查詢優(yōu)化

    MySQL自定義變量估計很少人有用到,但是如果用好了也是可以輔助進行性能優(yōu)化的。需要注意的是變量是基于連接會話的,而且可能存在一些意外的情況,需要小心使用。本篇介紹如何利用自定義變量進行查詢優(yōu)化,提高效率
    2021-05-05

最新評論