五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > mysql中order by與group by的執(zhí)行順序問題解析

mysql中order by與group by的執(zhí)行順序問題解析

文章來源:365jz.com     點擊數(shù):1442    更新時間:2017-12-28 11:33   參與評論
mysql 中order by 與group by的順序是:
select
from
where
group by
order by
注意:group by 比order by先執(zhí)行,order by不會對group by 內(nèi)部進(jìn)行排序,如果group by后只有一條記錄,那么order by 將無效。要查出group by中最大的或最小的某一字段使用 max或min函數(shù)。
例:
select sum(click_num) as totalnum,max(update_time) as update_time,count(*) as totalarticle from article_detail where userid =1 group by userid order by update_time desc

當(dāng)一個查詢語句同時出現(xiàn)了where,group by,having,order by的時候,執(zhí)行順序和編寫順序
2010-06-06 15:34
使用count(列名)當(dāng)某列出現(xiàn)null值的時候,count(*)仍然會計算,但是count(列名)不會。
二、數(shù)據(jù)分組(group by ):
select 列a,聚合函數(shù)(聚合函數(shù)規(guī)范) from 表明 where 過濾條件 group by 列a
group by 字句也和where條件語句結(jié)合在一起使用。當(dāng)結(jié)合在一起時,where在前,group by 在后。即先對select xx from xx的記錄集合用where進(jìn)行篩選,然后再使用group by 對篩選后的結(jié)果進(jìn)行分組。
三、使用having字句對分組后的結(jié)果進(jìn)行篩選,語法和where差不多:having 條件表達(dá)式
需要注意having和where的用法區(qū)別:
1.having只能用在group by之后,對分組后的結(jié)果進(jìn)行篩選(即使用having的前提條件是分組)。
2.where肯定在group by 之前,即也在having之前。
3.where后的條件表達(dá)式里不允許使用聚合函數(shù)(count(),sum(),avg(),max(),min()),而having可以。
四、當(dāng)一個查詢語句同時出現(xiàn)了where,group by,having,order by的時候,執(zhí)行順序和編寫順序是:
1.執(zhí)行where xx對全表數(shù)據(jù)做篩選,返回第1個結(jié)果集。
2.針對第1個結(jié)果集使用group by分組,返回第2個結(jié)果集。
3.針對第2個結(jié)果集中的每1組數(shù)據(jù)執(zhí)行select xx,有幾組就執(zhí)行幾次,返回第3個結(jié)果集。
4.針對第3個結(jié)集執(zhí)行having xx進(jìn)行篩選,返回第4個結(jié)果集。
5.針對第4個結(jié)果集排序。


例子:
完成一個復(fù)雜的查詢語句,需求如下:
按由高到低的順序顯示個人平均分在70分以上的學(xué)生姓名和平均分,為了盡可能地提高平均分,在計算平均分前不包括分?jǐn)?shù)在60分以下的成績,并且也不計算賤人(jr)的成績。 分析:
1.要求顯示學(xué)生姓名和平均分
因此確定第1步select s_name,avg(score) from student
2.計算平均分前不包括分?jǐn)?shù)在60分以下的成績,并且也不計算賤人(jr)的成績
因此確定第2步 where score>=60 and s_name!=’jr’ 3.顯示個人平均分
相同名字的學(xué)生(同一個學(xué)生)考了多門科目 因此按姓名分組 確定第3步 group by s_name 4.顯示個人平均分在70分以上
因此確定第4步 having avg(s_score)>=70 5.按由高到低的順序
因此確定第5步 order by avg(s_score) desc

如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答??! 點擊進(jìn)入論壇

發(fā)表評論 (1442人查看,0條評論)
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號