mysql中常見問題(where,group by,having順序問題)


mysql中常見問題(where,group by,having順序問題)

1,where,group by,having順序問題:

順序:where限制屬性-->   group by分組-->  having篩選-->  order by排序-->    limit限制記錄條數

where 先執行,然后group by 再執行,最后是 having;

 

ps:升序/降序 位置問題: 查詢分組,則升序/降序【order by 某個屬性】 放到最后。

 

 

2,某個限制條件,用having 還是 where 呢?

-----看題意被限制的屬性的數據值的擁有時刻,是在分組前還是分組后,分組前知道該屬性的數據值--------where,分組后才知道給屬性的數據值(分組后進行篩選)--------having

例如問:查詢參加考試的人大於4個的學科:

分析:通過已知的表的屬性,發現參加考試的人數並不知道,表格是沒有參加考試的人數的信息的,所以需要自己分組統計每門學科參加考試的人數后,再限制人數大於4:

例如:select ,subjectId,COUNT(score) as '參加考試人數' from score group by(SubjectId) haviing 參加考試人數 > 4  # 或 COUNT(score) ;  

 

3,查詢不在同一張表的屬性,並且要把查詢結果顯示到同一張表,

需要把其中一張的屬性select 出來,然后 通過某個屬性,把兩張表聯系到一起,然后查詢另外一張表的屬性時,(把前一張表查到的屬性看成一個整體,放到要顯示表中的那一列)。

例如:

 

 

 

 

 

 


免責聲明!

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



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