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 出來,然后 通過某個屬性,把兩張表聯系到一起,然后查詢另外一張表的屬性時,(把前一張表查到的屬性看成一個整體,放到要顯示表中的那一列)。
例如: