日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 羞羞网站在线看 | 亚洲啪啪网站 | 91视频免费入口 | 精品国产一区二区三 | 美女高潮黄又色高清视频免费 | 岛国大片在线免费观看 | 欧美性受视频 | 天堂在线v| 福利毛片| 免费污片在线观看 | 四虎永久免费在线观看 | 欧美三级午夜理伦三级中视频 | 亚洲青色在线 | 国产三级久久久 | 国产成人精品视频 | 成人免费网站www网站高清 | 嫩草在线观看 | 日韩中文字幕免费观看 | 国产美女精品久久久 | 国产女女做受ⅹxx高潮 | 国产精品久久久久久亚洲调教 | 亚洲成人av一区二区 | 国语对白真实视频播放 | 免费无码不卡视频在线观看 | 69**夜色精品国产69乱 | 一区二区三区美女视频 | 国产精品欧美精品 | 国产日产久久高清欧美一区 | 久久99中文字幕 | 毛片在线播放视频 | 国产精品久久久久久久久夜色 | 国产日批视频 | 久久艹在线| 欧美日韩精品在线观看 | 丝袜一区二区三区四区 | 女生扒开尿口让男生桶 | 欧美a在线 | 国产精品久久久精品三级 | 嫩草网站在线观看 | 欧美日韩首页 | 国产一区久久 | 打屁股调教网站 | 国产人妖在线播放 | 大尺度叫床戏做爰视频 | 久久影院国产 | 中国一级特黄录像播放 | 国产一级片播放 | 蜜臀精品一区二区三区 | 欧美专区日韩专区 | 国产成人无码精品久久 | 特大黑人娇小亚洲女mp4 | 国产ts人妖调教重口男 | av动漫免费观看 | 一二三区精品 | 欧美bbw视频 | 黄色一级视频免费观看 | 欧美不卡在线视频 | 亚洲成人网在线观看 | 91搞搞| 国产精品九九九 | 精品乱 | 色婷久久| 日韩视频在线免费播放 | 一级片在线视频 | 欧美 唯美 清纯 偷拍 | 色香av | 亚洲精品国产精品乱码不卡 | 日本xxxxxxxxx18 | 国产精品乱码久久久久久 | 国产精品嫩草影院桃色 | 在线观看国产一级片 | 国产精品毛片久久久久久久 | 国产av人人夜夜澡人人爽麻豆 | 欧美性生活在线视频 | 九九涩| 欧美亚洲一区二区三区 | 夜夜操影视 | 成人第四色| 五月激情久久 | 男女拍拍拍网站 | 亚洲AV成人无码网站天堂久久 | 麻豆黄色网 | 欧美人妻精品一区二区 | 91肉色超薄丝袜脚交一区二区 | 97人人视频 | 婷婷色小说 | 亚洲免费毛片 | 性欧美巨大 | 久久综合激情网 | 色悠悠视频 | 精品少妇人妻av免费久久洗澡 | 亚洲污网站| 免费在线观看毛片视频 | 天天碰天天碰 | 欧美成人a视频 | 老司机精品视频网站 | 日韩超碰| 欧洲亚洲视频 | 日本少妇一区二区 |