中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

MySQL入門知識(shí)之groupby命令用法詳細(xì)介紹

本文主要給大家簡單講講MySQL入門知識(shí)之group by命令用法詳細(xì)介紹,相關(guān)專業(yè)術(shù)語大家可以上網(wǎng)查查或者找一些相關(guān)書籍補(bǔ)充一下,這里就不涉獵了,我們就直奔主題吧,希望MySQL入門知識(shí)之group by命令用法詳細(xì)介紹這篇文章可以給大家?guī)硪恍?shí)際幫助。

吉安ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

1.group by命令用法

group by的常規(guī)用法是配合聚合函數(shù),利用分組信息進(jìn)行統(tǒng)計(jì),常見的是配合max等聚合函數(shù)篩選數(shù)據(jù)后分析,以及配合having進(jìn)行篩選后過濾。

常見的聚合函數(shù)如下:

MySQL入門知識(shí)之group by命令用法詳細(xì)介紹

  • 假設(shè)現(xiàn)有數(shù)據(jù)庫表如下:表user_info,id主鍵,user_id唯一鍵

CREATE TABLE `user_info` (

    `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵id',

    `user_id` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '用戶編號(hào)',

    `grade` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '年級(jí)',

    `class` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '班級(jí)',

    PRIMARY KEY (`id`),    UNIQUE INDEX `uniq_user_id` (`user_id`)

)

ENGINE=InnoDB

  • 數(shù)據(jù)

INSERT INTO `user_info` (`id`, `user_id`, `grade`, `class`) VALUES (10, '10230', 'C', 'B');

INSERT INTO `user_info` (`id`, `user_id`, `grade`, `class`) VALUES (9, '10229', 'C', 'a');

INSERT INTO `user_info` (`id`, `user_id`, `grade`, `class`) VALUES (8, '10228', 'B', 'b');

INSERT INTO `user_info` (`id`, `user_id`, `grade`, `class`) VALUES (7, '10227', 'B', 'b');

INSERT INTO `user_info` (`id`, `user_id`, `grade`, `class`) VALUES (6, '10226', 'B', 'a');

INSERT INTO `user_info` (`id`, `user_id`, `grade`, `class`) VALUES (5, '10225', 'B', 'a');

INSERT INTO `user_info` (`id`, `user_id`, `grade`, `class`) VALUES (4, '10224', 'A', 'b');

INSERT INTO `user_info` (`id`, `user_id`, `grade`, `class`) VALUES (3, '10223', 'A', 'b');

INSERT INTO `user_info` (`id`, `user_id`, `grade`, `class`) VALUES (2, '10222', 'A', 'a');

INSERT INTO `user_info` (`id`, `user_id`, `grade`, `class`) VALUES (1, '10221', 'A', 'a');

MySQL入門知識(shí)之group by命令用法詳細(xì)介紹

  • 聚合函數(shù)max

select max(user_id),grade from user_info group by grade;

#這條sql的含義很明確,將數(shù)據(jù)按照grade字段分組,查詢每組最大的user_id以及當(dāng)前組內(nèi)容。注意,這里分組條件是grade,查詢的非聚合條件也是grade。這里不產(chǎn)生沖突。

結(jié)果:

MySQL入門知識(shí)之group by命令用法詳細(xì)介紹

  • having

select max(user_id),grade from user_info group by grade  having grade>'A';

#這條sql與上面例子中的基本相同,不過后面跟了having過濾條件。將grade不滿足’>A’的過濾掉了。注意,這里分組條件是grade,查詢的非聚合條件也是grade。這里不產(chǎn)生沖突。

結(jié)果:

MySQL入門知識(shí)之group by命令用法詳細(xì)介紹

Having與Where的區(qū)別

  • where 子句的作用是在對(duì)查詢結(jié)果進(jìn)行分組前,將不符合where條件的行去掉,即在分組之前過濾數(shù)據(jù),where條件中不能包含聚合函數(shù),使用where條件過濾出特定的行。

  • having 子句的作用是篩選滿足條件的組,即在分組之后過濾數(shù)據(jù),條件中經(jīng)常包含聚合函數(shù),使用having 條件過濾出特定的組,也可以使用多個(gè)分組標(biāo)準(zhǔn)進(jìn)行分組。

2.group by的非常規(guī)用法

select max(user_id),id,grade from user_info group by grade;

#顯示出grade組中數(shù)值最大的user_id,顯示id,顯示grade,從user_infon表中提取。

結(jié)果:

MySQL入門知識(shí)之group by命令用法詳細(xì)介紹

這條sql的結(jié)果就值得討論了,與上述例子不同的是,查詢條件多了id一列。數(shù)據(jù)按照grade分組后,grade一列是相同的,max(user_id)按照數(shù)據(jù)進(jìn)行計(jì)算也是唯一的,id一列是如何取值的?看上述的數(shù)據(jù)結(jié)果,

推論:id是物理內(nèi)存的第一個(gè)匹配項(xiàng)。
究竟是與不是需要繼續(xù)探討。

修改數(shù)據(jù)

  • 修改id按照上述數(shù)據(jù)結(jié)果,將id=1,改為id=99,執(zhí)行sql后結(jié)論:

MySQL入門知識(shí)之group by命令用法詳細(xì)介紹

顯然,與上述例子的結(jié)果不同。第一條數(shù)據(jù)id變成了99,查出的結(jié)果第一條數(shù)據(jù)的id從1變成了2。表明,id這個(gè)非聚合條件字段的取值與數(shù)據(jù)寫入的時(shí)間無關(guān),因?yàn)閕d=1的記錄是先于id=2存在的,修改的數(shù)據(jù)不過是修改了這條數(shù)據(jù)的內(nèi)容。結(jié)合mysql的數(shù)據(jù)存儲(chǔ)理論,由于id是主鍵,所以數(shù)據(jù)在檢索是是按照主鍵排序后進(jìn)行過濾的,因此

推論:id字段的選取是按照mysql存儲(chǔ)的檢索數(shù)據(jù)匹配的第一條。
將id改為1后恢復(fù)了原始結(jié)果,無法推翻上述推論。

更改查詢條件:

select max(user_id),user_id,id,grade from user_info group by grade;

#顯示出grade組中數(shù)值最大的user_id,顯示user_id,顯示id,顯示grade,從user_infon表中提取

結(jié)果為:

MySQL入門知識(shí)之group by命令用法詳細(xì)介紹

將數(shù)據(jù)user_id改為10999后,

執(zhí)行

select max(user_id),user_id,id,grade from user_info group by grade;

結(jié)果為:

MySQL入門知識(shí)之group by命令用法詳細(xì)介紹

修改了user_id后,并沒有改變查詢到的數(shù)據(jù)條目,因此得出修改唯一鍵并不能影響查詢匹配的條目規(guī)則,所以條目規(guī)則依然是匹配第一條,即id=1。

MySQL入門知識(shí)之group by命令用法詳細(xì)介紹就先給大家講到這里,對(duì)于其它相關(guān)問題大家想要了解的可以持續(xù)關(guān)注我們的行業(yè)資訊。我們的板塊內(nèi)容每天都會(huì)捕捉一些行業(yè)新聞及專業(yè)知識(shí)分享給大家的。

本文標(biāo)題:MySQL入門知識(shí)之groupby命令用法詳細(xì)介紹
分享網(wǎng)址:http://www.rwnh.cn/article14/gsphge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作電子商務(wù)、網(wǎng)站改版自適應(yīng)網(wǎng)站、網(wǎng)站排名網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
资阳市| 朔州市| 泸溪县| 开江县| 宁南县| 柳江县| 乐业县| 武城县| 固阳县| 姜堰市| 措美县| 西乌| 翼城县| 通榆县| 苍南县| 永嘉县| 万荣县| 白玉县| 泰顺县| 竹北市| 巴彦县| 沙雅县| 迭部县| 乌兰县| 巴青县| 花垣县| 垦利县| 龙游县| 巴南区| 邹平县| 垫江县| 民乐县| 达州市| 安图县| 乌兰县| 白河县| 当雄县| 剑河县| 浠水县| 南乐县| 韶山市|