SQL語(yǔ)句中 Group by, having ,order by, Distinct 寫(xiě)法需要注意的事項(xiàng)
發(fā)表時(shí)間:2023-07-25 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]軟件等級(jí):更新時(shí)間:2016-11-11版本號(hào):v5.7.10 MySQL Server x64官方正式版免費(fèi)下載立即下載SQL語(yǔ)句中 Group by, having ,order b...
SQL語(yǔ)句中 Group by, having ,order by, Distinct 寫(xiě)法需要注意的事項(xiàng)
Group by, having ,order by, Distinct 是我們?nèi)粘?xiě)sql 語(yǔ)句頻率使用比較高的語(yǔ)句,這些語(yǔ)句都是比較耗性能的語(yǔ)句,在能不使用盡量不要使用,
SELECT DISTINCT 中使用 ORDER BY注意事項(xiàng):
SELECT DISTINCT BOOKID FROM BOOK ORDER BY BOOKNAME
以上語(yǔ)句將報(bào):
--如果指定了SELECT DISTINCT,那么ORDER BY 子句中的項(xiàng)就必須出現(xiàn)在選擇列表中。
因?yàn)橐陨险Z(yǔ)句類(lèi)似
SELECT BOOKID FROM BOOK GROUP BY BOOKID ORDER BY BOOKNAME
其實(shí)錯(cuò)誤信息也為:
--ORDER BY子句中的列"BOOK.BookName" 無(wú)效,因?yàn)樵摿袥](méi)有包含在聚合函數(shù)或GROUP BY 子句中。
應(yīng)該改為:
SELECT DISTINCT BOOKID,BOOKNAME FROM BOOK ORDER BY BOOKNAME
SELECT DISTINCT BOOKID,BOOKNAME FROM BOOK
SELECT BOOKID,BOOKNAME FROM BOOK GROUP BY BOOKID,BOOKNAME
GROUP BY 中使用 ORDER BY注意事項(xiàng):
SELECT COUNT(*) AS COUNT FROM REQUESTMETH GROUP BY REQUEST,METHOD ORDER BY REQUEST,METHOD
--這樣是允許的, ORDER BY后面的字段包含在GROUP BY 子句中
SELECT COUNT(*) AS COUNTS FROM REQUESTMETH GROUP BY REQUEST ORDER BY COUNT(*) DESC
--這樣是允許的,ORDER BY后面的字段包含在聚合函數(shù)中,結(jié)果集同下面語(yǔ)句一樣
SELECT COUNT(*) AS COUNTS FROM REQUESTMETH GROUP BY REQUEST ORDER BY COUNTS DESC
--這樣是允許的,區(qū)別于HAVING,HAVING后不允許跟聚集函數(shù)的別名作為過(guò)濾條件
SELECT COUNT(*) AS COUNTS FROM REQUESTMETH GROUP BY REQUEST ORDER BY METHOD
--這樣是錯(cuò)誤的:ORDER BY 子句中的列 "REQUESTMETH.method" 無(wú)效,因?yàn)樵摿袥](méi)有包含在聚合函數(shù)或 GROUP BY 子句中。
HAVING后的條件不能用別名COUNT>3 必須使用COUNT(*) >3,否則報(bào):列名 'COUNT' 無(wú)效。
having 子句中的每一個(gè)元素并不一定要出現(xiàn)在select列表中
如果把該語(yǔ)句寫(xiě)成:
SELECT COUNT(*) AS COUNT,REQUEST,METHOD FROM REQUESTMETH GROUP BY
REQUEST ORDER BY REQUEST
那么將報(bào):
選擇列表中的列 'REQUESTMETH.method' 無(wú)效,因?yàn)樵摿袥](méi)有包含在聚合函數(shù)或 GROUP BY 子句中。
注意:
1、使用GROUP BY 子句時(shí),SELECT 列表中的非匯總列必須為GROUP BY 列表中的項(xiàng)。
2、分組時(shí),所有的NULL值分為一組。
3、GROUP BY 列表中一般不允許出現(xiàn)復(fù)雜的表達(dá)試、顯示標(biāo)題以及SELECT列表中的位置標(biāo)號(hào)。
如:
SELECT REQUEST,METHOD, COUNT(*) AS COUNT FROM REQUESTMETH GROUP BY
REQUEST,2 ORDER BY REQUEST
錯(cuò)誤信息為:每個(gè) GROUP BY 表達(dá)式都必須包含至少一個(gè)列引用。
學(xué)習(xí)教程快速掌握從入門(mén)到精通的電腦知識(shí)