group by 與 where, having以及順序


ORDER BY要在GROUP BY的后面

 

 

1. GROUP BY子句必須出現在WHERE子句之后,ORDER BY子句之前. HAVING語句必須在ORDER BY子句之后。(where先執行,再groupby分組;groupby先分組,having在執行。)

 

 

 

 

2. 除聚集計算語句外,SELECT語句中的每個列都必須在GROUP BY子

句中給出。count()為聚集函數,vend_id在后面groupby中有,所以select后面有。

 

 

select vend_id, count(*) , sales  from products group by vend_id;

這個語句,其中sales字段,在group by中沒有,所以查詢的結果,sales的值是錯誤的!!!(切記)

 

如果想用分組后的,sales的字段,可以采用left join的方式,相當於兩個表匹配的方式,查詢:(原始表B)

select vend_id, sales from B left join (select vend_id, count(*) nums, min(sales) sales   from products group by vend_id) as A on B.vend_id = A.vend_id WHERE.......

 

 

3. 語句順序

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM