首頁 資料庫 mysql教程 SqlServer 下 Group by、having、order by、Distinct 总结

SqlServer 下 Group by、having、order by、Distinct 总结

Jun 07, 2016 pm 05:49 PM
distinct order by

文章总结了SqlServer 下 Group by、having、order by、Distinct用法事项,有需要的朋友可学习一下。

直奔主题,如下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注意事项:

HAVING后的条件不能用别名COUNT>3 必须使用COUNT(*) >3,否则报:列名 'COUNT' 无效。

having 子句中的每一个元素并不一定要出现在select列表中

如果把该语句写成:

 代码如下 复制代码
SELECT COUNT(*) AS COUNT,REQUEST,METHOD FROM REQUESTMETH GROUP BY
REQUEST ORDER BY REQUEST

那么将报:

选择列表中的列 'REQUESTMETH.method' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

注意:
1、使用GROUP BY 子句时,SELECT 列表中的非汇总列必须为GROUP BY 列表中的项。
2、分组时,所有的NULL值分为一组。
3、GROUP BY 列表中一般不允许出现复杂的表达试、显示标题以及SELECT列表中的位置标号。

如:

 代码如下 复制代码
SELECT REQUEST,METHOD, COUNT(*) AS COUNT FROM REQUESTMETH GROUP BY
REQUEST,2 ORDER BY REQUEST 

错误信息为:每个 GROUP BY 表达式都必须包含至少一个列引用。

 

GROUP BY 中使用 ORDER BY注意事项:

 代码如下 复制代码
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后面的字段包含在聚合函数中,结果集同下面语句一样

 

 代码如下 复制代码
SELECT COUNT(*) AS COUNTS FROM REQUESTMETH GROUP BY REQUEST ORDER BY COUNTS DESC

--这样是允许的,区别于HAVING,HAVING后不允许跟聚集函数的别名作为过滤条件

 

 代码如下 复制代码
SELECT COUNT(*) AS COUNTS FROM REQUESTMETH GROUP BY REQUEST ORDER BY METHOD--

这样是错误的:ORDER BY 子句中的列 "REQUESTMETH.method" 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。


SELECT DISTINCT 中使用 ORDER BY注意事项:

 代码如下 复制代码
SELECT DISTINCT BOOKID FROM BOOK ORDER BY BOOKNAME

以上语句将报:

--如果指定了SELECT DISTINCT,那么ORDER BY 子句中的项就必须出现在选择列表中。

因为以上语句类似

 代码如下 复制代码
SELECT BOOKID FROM BOOK GROUP BY BOOKID ORDER BY BOOKNAME

其实错误信息也为:

--ORDER BY子句中的列"BOOK.BookName" 无效,因为该列没有包含在聚合函数或GROUP BY 子句中。


应该改为:

 代码如下 复制代码

SELECT DISTINCT BOOKID,BOOKNAME FROM BOOK ORDER BY BOOKNAMESELECT DISTINCT BOOKID,BOOKNAME FROM BOOKSELECT BOOKID,BOOKNAME FROM BOOK GROUP BY BOOKID,BOOKNAME

以上两句查询结果是一致的,DISTINCT的语句其实完全可以等效的转换为GROUP BY语句

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1655
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1252
29
C# 教程
1226
24
聊聊優化sql中order By語句的方法 聊聊優化sql中order By語句的方法 Sep 27, 2022 pm 01:45 PM

如何優化sql中的orderBy語句?以下這篇文章為大家介紹一下優化sql中orderBy語句的方法,具有很好的參考價值,希望對大家有幫助。

MySQL中的distinct與group by如何使用 MySQL中的distinct與group by如何使用 May 26, 2023 am 10:34 AM

先說大致的結論:在語意相同,有索引的情況下:groupby和distinct都能使用索引,效率相同。在語意相同,無索引的情況下:distinct效率高於groupby。原因是distinct和groupby都會進行分組操作,但groupby可能會進行排序,觸發filesort,導致sql執行效率低。基於這個結論,你可能會問:為什麼在語意相同,有索引的情況下,groupby和distinct效率相同?在什麼情況下,groupby會進行排序操作?帶著這兩個問題找出答案。接下來,我們先來看看dist

解析SQL中使用distinct關鍵字 解析SQL中使用distinct關鍵字 Feb 18, 2024 pm 09:21 PM

SQL中distinct用法詳解在SQL資料庫中,我們常常會遇到需要移除重複資料的情況。此時,我們可以使用distinct關鍵字,它能夠幫助我們去除重複數據,使得查詢結果更加清晰和準確。 distinct的基本使用方法非常簡單,只需要在select語句中使用distinct關鍵字即可。例如,以下是一個普通的select語句:SELECTcolumn_name

mysql的DISTINCT怎麼使用 mysql的DISTINCT怎麼使用 Jun 03, 2023 pm 05:56 PM

mysql的DISTINCT的關鍵字有很多你想不到的用處1.在count不重複的記錄的時候能用到比如SELECTCOUNT(DISTINCTid)FROMtablename;就是計算talbebname表中id不同的記錄有多少條2,在需要返回記錄不同的id的具體值的時候可以用例如SELECTDISTINCTidFROMtablename;返回talbebname表中不同的id的具體的值3.上面的情況2對於需要返回mysql表中2列以上的結果時會有歧義比如SELECTDISTINCTid,type

oracle的distinct用法是什麼 oracle的distinct用法是什麼 Jul 11, 2023 am 09:35 AM

oracle的distinct用法是可以過濾結果集中的重複行,確保「SELECT」子句中傳回指定的一列或多列的值是唯一的。其語法為“SELECT DISTINCT 欄1,列2,列3... from 表名”,“distinct”會對傳回的結果集進行排序,可以和“order by”結合使用,提高效率。

如何透過MySQL對DISTINCT優化來提高效能 如何透過MySQL對DISTINCT優化來提高效能 May 11, 2023 am 08:12 AM

MySQL是目前應用廣泛的關聯式資料庫之一。在大數據量儲存與查詢中,最佳化資料庫效能是至關重要的。其中,DISTINCT是常用的去重查詢運算子。本文將介紹如何透過MySQL對DISTINCT最佳化來提高資料庫查詢效能。一、DISTINCT的原理及缺點DISTINCT關鍵字用於從查詢結果中移除重複行。在大量資料的情況下,查詢中可能存在多個重複值,導致輸出資料冗餘,

mysql踩坑之count distinct多列問題怎麼解決 mysql踩坑之count distinct多列問題怎麼解決 Jun 03, 2023 am 10:49 AM

重複的測試資料庫如下所示:CREATETABLE`test_distinct`(`id`int(11)NOTNULLAUTO_INCREMENT,`a`varchar(50)CHARACTERSETutf8DEFAULTNULL,`b`varchar(50)CHARACTERSETutf8DEFAULTN InnoDBAUTO_INCREMENT=1DEFAULTCHARSET=latin1;表內測試資料如下,現在我們需要統計這三列去重後的列

SQL中ORDER BY子句怎麼用 SQL中ORDER BY子句怎麼用 May 28, 2023 am 09:52 AM

SQLORDERBY子句ORDERBY語句用於根據指定的資料列對結果集進行排序。 ORDERBY語句預設會依照升序對記錄進行排序,如需依照降序排序,請使用DESC關鍵字。 "Orders"表:CompanyOrderNumberIBM3532HuluMiao2356Apple4698IBM6953實例1:以字母順序顯示公司名稱:SELECTCompany,OrderNumberFROMOrdersORDERBYCompany結果:CompanyOrderNumberApple4698H

See all articles