亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mysql不支持group by的解決方法小結(jié)

 更新時(shí)間:2020年02月07日 17:10:27   投稿:mdxy-dxy  
下載安裝的是最新版的mysql5.7.x版本,默認(rèn)是開(kāi)啟了 only_full_group_by 模式的,但開(kāi)啟這個(gè)模式后,原先的 group by 語(yǔ)句就報(bào)錯(cuò),然后又把它移除了

下載安裝的是最新版的mysql5.7.x版本,默認(rèn)是開(kāi)啟了 only_full_group_by 模式的,但開(kāi)啟這個(gè)模式后,原先的 group by 語(yǔ)句就報(bào)錯(cuò),然后又把它移除了。

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

only_full_group_by 模式開(kāi)啟比較好。

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

具體出錯(cuò)提示:

[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. 查詢出來(lái)的值為:

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,重新設(shè)置值。

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,對(duì)于新建的數(shù)據(jù)庫(kù)有效。對(duì)于已存在的數(shù)據(jù)庫(kù),則需要在對(duì)應(yīng)的數(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查詢語(yǔ)句中不需要group by的字段上使用any_value()函數(shù)
這種對(duì)于已經(jīng)開(kāi)發(fā)了不少功能的項(xiàng)目不太合適,畢竟要把原來(lái)的sql都給修改一遍

3.1.

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

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

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

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

注:使用命令

set sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

這樣可以修改一個(gè)會(huì)話中的配置項(xiàng),在其他會(huì)話中是不生效的?!?nbsp;

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

進(jìn)入mysql命令行 執(zhí)行如下兩句語(yǔ)句

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

但是當(dāng)重啟mysql 問(wèn)題又會(huì)復(fù)現(xiàn)

找到my.cnf,編輯它~把以下命令放到合適位置,重啟mysql 服務(wù),OK~報(bào)錯(cuò)沒(méi)啦~

[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] 內(nèi)容區(qū)域

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

1、查看sql_mode

select @@global.sql_mode

查詢出來(lái)的值為:

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,重新設(shè)置值。

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報(bào)錯(cuò)ONLY_FULL_GROUP_BY不修改配置文件

1.進(jìn)入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',''));
以上三個(gè)sql_home都設(shè)置一遍,

4.退出mysql重新進(jìn)入查看sql_mode; 

 

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

相關(guān)文章

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

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

    Mysql我們可以使用遞歸查詢來(lái)構(gòu)建一個(gè)遞歸樹(shù),本文就來(lái)介紹一下Mysql實(shí)現(xiàn)遞歸樹(shù)查詢的使用示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    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用法介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 新手把mysql裝進(jìn)docker中碰到的各種問(wèn)題

    新手把mysql裝進(jìn)docker中碰到的各種問(wèn)題

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

    阿里云Centos 7.5安裝Mysql的教程

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

    CentOS6.9+Mysql5.7.18源碼安裝詳細(xì)教程

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

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

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

    MySQL將CSV文件快速導(dǎo)入MySQL中的實(shí)現(xiàn)

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

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

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

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

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

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

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

最新評(píng)論