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の違い:
書き込みと実行順序: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番目の結果セットについてソートします.
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番目の結果セットについてソートします.