sqlでwhere、having、group by、order byの実行と書く順序

905 ワード

記事の転載https://www.cnblogs.com/Jessy/p/3527091.html
whereとhavingの違い:1.havingはgroupbyの後にのみ用いられ、パケット後の結果をフィルタリングする(すなわちhavingを使用する前提条件はパケットである).2.whereはgroupbyの前、すなわちhavingの前にあるに違いない.3.where後の条件式では集約関数は使用できませんが、havingはできます.group byとorder byの違い:
    order by:    (  ASC、  DESC、    、    (   ))。    
    group by:  ,                  ,       。
        (count,sum,avg,max,min)     :   ,             。   ,            。
      group by ,select                     。
      having      (having where       ,having    ,        ,where    )
group by  order by  

書き込みと実行順序:where、group by、having、order byクエリー文が同時にwhere、group by、having、order byが現れた場合、実行順序と作成順序は:1.where xxを実行して全テーブルデータをフィルタし、1番目の結果セットを返します.2.1番目の結果セットに対してgroupbyパケットを使用し、2番目の結果セットを返します.3.2番目のセットに対してhaving xxをフィルタリングし、3番目の結果セットを返します.4.3番目の結果セットの1組のデータごとにselect xxを実行し、いくつかのグループが何回か実行し、4番目の結果セットを返す.5.4番目の結果セットについてソートします.