西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁西西教程數(shù)據(jù)庫教程 → SQL中 Group by、having、order by、Distinct 需要注意的事項(xiàng)

SQL中 Group by、having、order by、Distinct 需要注意的事項(xiàng)

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:西西整理時間:2012/10/29 10:16:52字體大。A-A+

作者:佚名點(diǎn)擊:47次評論:1次標(biāo)簽: SQL

  • 類型:數(shù)據(jù)庫類大。1.7M語言:英文 評分:6.6
  • 標(biāo)簽:
立即下載

直奔主題,如下SQL語句:

SELECT COUNT(*) AS COUNT,REQUEST,METHOD FROM REQUESTMETH GROUP BY 
REQUEST,METHOD HAVING (REQUEST ='FC.OCEAN.JOB.SERVER.CBIZOZBKHEADER' OR REQUEST='FC.Ocean.Job.Server.CBizOzDocHeader')
AND COUNT(*) >3
ORDER BY REQUEST

注意事項(xiàng):

HAVING后的條件不能用別名COUNT>3 必須使用COUNT(*) >3,否則報(bào):列名 'COUNT' 無效。

having 子句中的每一個元素并不一定要出現(xiàn)在select列表中

如果把該語句寫成:

SELECT COUNT(*) AS COUNT,REQUEST,METHOD FROM REQUESTMETH GROUP BY 
REQUEST ORDER BY REQUEST

那么將報(bào):

選擇列表中的列 'REQUESTMETH.method' 無效,因?yàn)樵摿袥]有包含在聚合函數(shù)或 GROUP BY 子句中。

注意:
1、使用GROUP BY 子句時,SELECT 列表中的非匯總列必須為GROUP BY 列表中的項(xiàng)。
2、分組時,所有的NULL值分為一組。
3、GROUP BY 列表中一般不允許出現(xiàn)復(fù)雜的表達(dá)試、顯示標(biāo)題以及SELECT列表中的位置標(biāo)號。

如:

SELECT REQUEST,METHOD, COUNT(*) AS COUNT FROM REQUESTMETH GROUP BY 
REQUEST,2 ORDER BY REQUEST  

錯誤信息為:每個 GROUP BY 表達(dá)式都必須包含至少一個列引用。

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é)果集同下面語句一樣

SELECT COUNT(*) AS COUNTS FROM REQUESTMETH GROUP BY REQUEST ORDER BY COUNTS DESC 

--這樣是允許的,區(qū)別于HAVING,HAVING后不允許跟聚集函數(shù)的別名作為過濾條件

SELECT COUNT(*) AS COUNTS FROM REQUESTMETH GROUP BY REQUEST ORDER BY METHOD

--這樣是錯誤的:ORDER BY 子句中的列 "REQUESTMETH.method" 無效,因?yàn)樵摿袥]有包含在聚合函數(shù)或 GROUP BY 子句中。


SELECT DISTINCT 中使用 ORDER BY注意事項(xiàng):

SELECT DISTINCT BOOKID FROM BOOK ORDER BY BOOKNAME

以上語句將報(bào):

--如果指定了SELECT DISTINCT,那么ORDER BY 子句中的項(xiàng)就必須出現(xiàn)在選擇列表中。

因?yàn)橐陨险Z句類似

SELECT BOOKID FROM BOOK GROUP BY BOOKID ORDER BY BOOKNAME

其實(shí)錯誤信息也為:

--ORDER BY子句中的列"BOOK.BookName" 無效,因?yàn)樵摿袥]有包含在聚合函數(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

以上兩句查詢結(jié)果是一致的,DISTINCT的語句其實(shí)完全可以等效的轉(zhuǎn)換為GROUP BY語句

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(1)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)