日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

MySQL运维实战系列:MySQL5.7 Group By 问题

發(fā)布時(shí)間:2025/3/17 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL运维实战系列:MySQL5.7 Group By 问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、環(huán)境

MySQL版本:MySQL5.7.22表結(jié)構(gòu):CREATE TABLE `crm_report_accounting_income` (`id` int(10) NOT NULL AUTO_INCREMENT,`contract_id` int(10) NOT NULL,`contract_no` varchar(50) NOT NULL,`date` int(8) NOT NULL,`city_id` int(11) NOT NULL DEFAULT '0' COMMENT '城市id',`city_name` varchar(50) DEFAULT NULL,`adviser_id` int(10) NOT NULL,`adviser_name` varchar(50) DEFAULT NULL,`accounting` decimal(15,2) NOT NULL COMMENT 'xx',`receivable` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '當(dāng)xx',`contract_type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1:xx合同;2:xx合同;3:xx合同',PRIMARY KEY (`id`),KEY `contract_id` (`contract_id`),KEY `date` (`date`),KEY `city_id` (`city_id`) ) ENGINE=InnoDB AUTO_INCREMENT=734525 DEFAULT CHARSET=utf8

二、業(yè)務(wù)問(wèn)題

* 基本信息,由于合同號(hào)太多,所以這邊就以一個(gè)有重復(fù)數(shù)據(jù)的合同id為例dba:aif_db> select contract_id,contract_no,receivable,date from crm_report_accounting_income_2015_online where contract_id = 27310; +-------------+----------------------------+------------+----------+ | contract_id | contract_no | receivable | date | +-------------+----------------------------+------------+----------+ | 27310 | A00-SHEN-05-2018-06-004613 | 2941.18 | 20180628 | | 27310 | A00-SHEN-05-2018-06-004613 | 5882.36 | 20180629 | | 27310 | A00-SHEN-05-2018-06-004613 | 8823.54 | 20180630 | | 27310 | A00-SHEN-05-2018-06-004613 | 11764.72 | 20180701 | | 27310 | A00-SHEN-05-2018-06-004613 | 14705.90 | 20180702 | | 27310 | A00-SHEN-05-2018-06-004613 | 17647.08 | 20180703 | | 27310 | A00-SHEN-05-2018-06-004613 | 20588.26 | 20180704 | | 27310 | A00-SHEN-05-2018-06-004613 | 23529.44 | 20180705 | | 27310 | A00-SHEN-05-2018-06-004613 | 26470.62 | 20180706 | | 27310 | A00-SHEN-05-2018-06-004613 | 29411.80 | 20180707 | | 27310 | A00-SHEN-05-2018-06-004613 | 32352.98 | 20180708 | | 27310 | A00-SHEN-05-2018-06-004613 | 35294.16 | 20180709 | +-------------+----------------------------+------------+----------+ 12 rows in set (0.00 sec)* 查詢每個(gè)最新合同的信息,由于合同號(hào)太多,所以這邊就以一個(gè)有重復(fù)數(shù)據(jù)的合同id為例select contract_no, contract_id, city_name, receivable,date from (select * from crm_report_accounting_income_2015_online where contract_id = 27310 ORDER BY `date` desc) p GROUP BY contract_id+----------------------------+-------------+-----------+------------+----------+ | contract_no | contract_id | city_name | receivable | date | +----------------------------+-------------+-----------+------------+----------+ | A00-xxxx-05-2018-06-xxxxxx | xxxxx | 沈陽(yáng) | 2941.18 | 20180628 | +----------------------------+-------------+-----------+------------+----------+ 1 row in set (0.00 sec)

以上看到的寫(xiě)法,是通過(guò)子查詢寫(xiě)的,5.6查詢沒(méi)問(wèn)題,5.7就變成了以上的結(jié)果,很明顯得到的答案不是業(yè)務(wù)想要的

究其原因還是因?yàn)?#xff0c;MySQL5.7 sql mode更加嚴(yán)格了,如果設(shè)置sql_mode = ONLY_FULL_GROUP_BY, 那么以上SQL就會(huì)報(bào)錯(cuò)

因?yàn)閟ql_mode = ONLY_FULL_GROUP_BY 要求符合SQL 92標(biāo)準(zhǔn),即:select列表里只能出現(xiàn)分組列(即group by后面的列)和聚合函數(shù)(max,min等等)

然而為了兼容5.6,我們?cè)O(shè)置sql_mode='', 所以我們的Group by 在子查詢中就跟5.6就不一致了

當(dāng)然,我們應(yīng)該避免不標(biāo)準(zhǔn)的SQL寫(xiě)法,這樣的問(wèn)題,我們的解法就是調(diào)整業(yè)務(wù)的SQL語(yǔ)句,改寫(xiě)成SQL 92標(biāo)準(zhǔn)的語(yǔ)法

那么以上SQL語(yǔ)句應(yīng)該調(diào)整為:

selectcontract_no,e.contract_id,city_name,receivable,date fromcrm_report_accounting_income_2015_online e,( select contract_id , max(date) max_date from crm_report_accounting_income_2015_online where contract_id = 27310 group by contract_id ) t wheree.contract_id = t.contract_idand e.date = t.max_date+----------------------------+-------------+-----------+------------+----------+ | contract_no | contract_id | city_name | receivable | date | +----------------------------+-------------+-----------+------------+----------+ | A00-xxxx-05-2018-06-004613 | 27310 | xxxx | 35294.16 | 20180709 | +----------------------------+-------------+-----------+------------+----------+ 1 row in set (0.00 sec)

以上都還是需要業(yè)務(wù)代碼修改,這樣如果沒(méi)有提前發(fā)現(xiàn)問(wèn)題,豈不是會(huì)導(dǎo)致業(yè)務(wù)出錯(cuò)了?有沒(méi)有更好的辦法?

MySQL方面其實(shí)還是可以配置相關(guān)的參數(shù)的:

dba:aif_db> set optimizer_switch='derived_merge=off'; Query OK, 0 rows affected (0.00 sec)dbadmin:aifangcrm_db> select contract_no, contract_id, city_name, receivable,date from-> (select * from crm_report_accounting_income_2015_online where contract_id = 27310 ORDER BY `date` desc) p GROUP BY contract_id-> ; +----------------------------+-------------+-----------+------------+----------+ | contract_no | contract_id | city_name | receivable | date | +----------------------------+-------------+-----------+------------+----------+ | A00-xxxx-05-2018-06-004613 | 27310 | xxxx | 35294.16 | 20180709 | +----------------------------+-------------+-----------+------------+----------+ 1 row in set (0.00 sec)

三、總結(jié)

  • SQL語(yǔ)法應(yīng)該要按照標(biāo)準(zhǔn)的SQL92來(lái)寫(xiě)
  • 數(shù)據(jù)庫(kù)升級(jí)到5.7之后,應(yīng)該提前監(jiān)控處group by + 子查詢的情況,提前告知業(yè)務(wù)修改業(yè)務(wù)代碼
  • 設(shè)置參數(shù)也能解決問(wèn)題,但是這個(gè)參數(shù)畢竟是5.7新增的,如果關(guān)閉后,以后會(huì)不會(huì)導(dǎo)致其他的bug就不知曉了

最后,還是希望能夠修改query 語(yǔ)句到標(biāo)準(zhǔn)語(yǔ)法,如果出現(xiàn)業(yè)務(wù)問(wèn)題,可以讓業(yè)務(wù)修改參數(shù)快速解決問(wèn)題,然后再修改語(yǔ)句比較與時(shí)俱進(jìn)

總結(jié)

以上是生活随笔為你收集整理的MySQL运维实战系列:MySQL5.7 Group By 问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色aaa视频 | 已满十八岁免费观看全集动漫 | 国产主播一区 | 精品国产黄色片 | 欧洲美女与动交ccoo | 日本美女动态 | 亚洲 日本 欧美 中文幕 | 国产欧美一区二区精品性色 | 亚洲人一区二区三区 | av操操操 | 久久成人福利 | 福利一区福利二区 | 爆乳熟妇一区二区三区霸乳 | 中文字幕色 | 国产网红av | 日本三级小视频 | 成人免费网站www网站高清 | 国产福利片在线观看 | 国产精品97 | 爱情岛论坛亚洲自拍 | 欧美xo影院 | 国产专区av | 黄色av网址在线 | 欧美人吸奶水吃奶水 | 男人添女人荫蒂国产 | 五月天国产视频 | 成人v片 | 人妻熟女一区二区aⅴ水野 91在线观看视频 | 欧美性视频播放 | 综合网中文字幕 | 日韩一区二区三区四区在线 | 亚洲咪咪 | 欧美大片在线播放 | 国产97超碰| 午夜精品久久久久久久99老熟妇 | 国产精品资源站 | 久久不卡免费视频 | 操韩国美女 | 欧美激情一区二区 | 九九精品在线观看视频 | 亚洲国产av一区二区三区 | 久久久久久国产精品免费播放 | 波多野结衣久久 | 在线看福利影 | 中文字幕无码不卡免费视频 | 农村偷人一级超爽毛片 | 欧美人与动物xxx | 香蕉视频免费在线 | 久久精品无码中文字幕 | 午夜精品久久久久久久久久久久久 | 恶虐女帝安卓汉化版最新版本 | 日本夜夜操 | 中文字幕在线影院 | 亚洲第一区av | 夜夜嗨老熟女av一区二区三区 | 国产69精品久久久久久 | 综合精品一区 | 五月开心网| 印度午夜性春猛xxx交 | 国产一区第一页 | 一区二区国产精品视频 | 久久人人爽人人人人片 | 久久综合日本 | 在线观看一区二区三区四区 | 欧美 日韩 国产 在线 | 亚洲欧洲精品一区 | 国产天堂在线观看 | 在线观看亚洲国产 | 国产精品秘入口18禁麻豆免会员 | 懂色av中文一区二区三区天美 | 亚洲综合小说 | 久久精品国产亚洲AV无码男同 | 一级做a免费 | aaa亚洲精品 | 久久神马影院 | www.久久视频 | 91av福利视频 | 毛片毛多水多 | 亚洲色图综合 | 一个人看的www视频在线观看 | 国产精品夜色一区二区三区 | 日韩在线观看网址 | 国产一区二区在线观看免费 | 美女让男生桶 | 少妇特黄a一区二区三区 | 四虎成人精品永久免费av | 丰满大乳奶做爰ⅹxx视频 | 午夜在线观看视频18 | 森泽佳奈在线播放 | av综合导航| 嫩草国产精品 | 在线激情小视频 | 少妇紧身牛仔裤裤啪啪 | 久久久久国产精品午夜一区 | 久久久久免费视频 | 欧美日韩精品综合 | 奇米影视在线 | 日韩人妻无码一区二区三区 | 欧美日韩在线视频一区二区 |