" />

欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL HAVING子句在GROUP BY中的條件篩選靈活運用

 更新時間:2023年11月30日 09:44:10   作者:小萬哥  
這篇文章主要為大家介紹了SQL HAVING子句在GROUP BY中的條件篩選靈活運用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

SQL HAVING子句

HAVING子句被添加到SQL中,因為WHERE關(guān)鍵字不能與聚合函數(shù)一起使用。

HAVING語法

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);

演示數(shù)據(jù)庫

以下是Northwind示例數(shù)據(jù)庫中“Customers”表的一部分選擇:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

SQL HAVING示例

以下SQL語句列出了每個國家的客戶數(shù)量。只包括擁有超過5名客戶的國家:

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;

以下SQL語句列出了每個國家的客戶數(shù)量,按高到低排序(只包括擁有超過5名客戶的國家):

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5
ORDER BY COUNT(CustomerID) DESC;

演示數(shù)據(jù)庫

以下是Northwind示例數(shù)據(jù)庫中“Orders”表的一部分選擇:

OrderIDCustomerIDEmployeeIDOrderDateShipperID
102489051996-07-043
102498161996-07-051
102503441996-07-082

以及“Employees”表的一部分選擇:

EmployeeIDLastNameFirstNameBirthDatePhotoNotes
1DavolioNancy1968-12-08EmpID1.picEducation includes a BA....
2FullerAndrew1952-02-19EmpID2.picAndrew received his BTS....
3LeverlingJanet1963-08-30EmpID3.picJanet has a BS degree....

更多HAVING示例

以下SQL語句列出了注冊超過10個訂單的員工:

SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM (Orders
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID)
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 10;

以下SQL語句列出了是否員工“Davolio”或“Fuller”注冊了超過25個訂單:

SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM Orders
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
WHERE LastName = 'Davolio' OR LastName = 'Fuller'
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 25;

SQL EXISTS 運算符

EXISTS 運算符用于測試子查詢中是否存在任何記錄。如果子查詢返回一個或多個記錄,EXISTS 運算符將返回 TRUE

EXISTS 語法

SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);

演示數(shù)據(jù)庫

以下是 Northwind 示例數(shù)據(jù)庫中 "Products" 表的一部分選擇:

ProductIDProductNameSupplierIDCategoryIDUnitPrice
1Chais1110 boxes x 20 bags18
2Chang1124 - 12 oz bottles19
3Aniseed Syrup1212 - 550 ml bottles10
4Chef Anton's Cajun Seasoning2248 - 6 oz jars22
5Chef Anton's Gumbo Mix2236 boxes21.35

以及 "Suppliers" 表的一部分選擇:

SupplierIDSupplierNameContactNameAddressCityPostalCodeCountry
1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonEC1 4SDUK
2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA
3Grandma Kelly's HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA
4Tokyo TradersYoshi Nagase9-8 Sekimai Musashino-shiTokyo100Japan

SQL EXISTS 示例

以下 SQL 語句返回 TRUE 并列出產(chǎn)品價格低于 20 的供應商:

SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID = Suppliers.SupplierID AND Price < 20);

以下 SQL 語句返回 TRUE 并列出產(chǎn)品價格等于 22 的供應商:

SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID = Suppliers.SupplierID AND Price = 22);

SQL ANY 和 ALL 運算符

ANY 和 ALL 運算符允許您在單個列值和一系列其他值之間進行比較。

SQL ANY 運算符

ANY 運算符返回布爾值作為結(jié)果,如果子查詢值中的任何一個滿足條件,則返回 TRUEANY 意味著如果對范圍內(nèi)的任何值進行操作為真,則條件將為真。

ANY 語法

SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
  (SELECT column_name
  FROM table_name
  WHERE condition);

注意:operator 必須是標準比較運算符(=、<>、!=、>、>=、< 或 <=)。

SQL ANY 示例

以下 SQL 語句列出了如果在 OrderDetails 表中找到任何記錄的話,具有 Quantity 等于 10 的 ProductName(這將返回 TRUE,因為 Quantity 列有一些值為 10):

SELECT ProductName
FROM Products
WHERE ProductID = ANY
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity = 10);

以下 SQL 語句列出了如果在 OrderDetails 表中找到任何記錄的話,具有 Quantity 大于 99 的 ProductName(這將返回 TRUE,因為 Quantity 列有一些值大于 99):

SELECT ProductName
FROM Products
WHERE ProductID = ANY
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity > 99);

以下 SQL 語句列出了如果在 OrderDetails 表中找到任何記錄的話,具有 Quantity 大于 1000 的 ProductName(這將返回 FALSE,因為 Quantity 列沒有任何值大于 1000):

SELECT ProductName
FROM Products
WHERE ProductID = ANY
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity > 1000);

SQL ALL 運算符

ALL 運算符返回布爾值作為結(jié)果,如果子查詢值中的所有值都滿足條件,則返回 TRUE。ALL 意味著只有當范圍內(nèi)的所有值都為真時,條件才為真。

使用 SELECT 的 ALL 語法

SELECT ALL column_name(s)
FROM table_name
WHERE condition;

使用 WHERE 或 HAVING 的 ALL 語法

SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
  (SELECT column_name
  FROM table_name
  WHERE condition);

注意:operator 必須是標準比較運算符(=、<>、!=、>、>=、< 或 <=)。

SQL ALL 示例

以下 SQL 語句列出了所有的產(chǎn)品名稱:

SELECT ALL ProductName
FROM Products
WHERE TRUE;

以下 SQL 語句列出了如果在 OrderDetails 表中的所有記錄的話,具有 Quantity 等于 10 的 ProductName。這當然將返回 FALSE,因為 Quantity 列有許多不同的值(不僅僅是值為 10):

SELECT ProductName
FROM Products
WHERE ProductID = ALL
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity = 10);

以上就是SQL HAVING子句在GROUP BY中的條件篩選靈活運用的詳細內(nèi)容,更多關(guān)于SQL HAVING條件篩選GROUP BY的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 利用Shell腳本實現(xiàn)遠程MySQL自動查詢

    利用Shell腳本實現(xiàn)遠程MySQL自動查詢

    本篇文章是對利用Shell腳本實現(xiàn)遠程MySQL自動查詢的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • Spring中的InitializingBean和SmartInitializingSingleton的區(qū)別詳解

    Spring中的InitializingBean和SmartInitializingSingleton的區(qū)別詳解

    這篇文章主要介紹了Spring中的InitializingBean和SmartInitializingSingleton的區(qū)別詳解,InitializingBean只有一個接口方法afterPropertiesSet(),在BeanFactory初始化完這個bean,并且把bean的參數(shù)都注入成功后調(diào)用一次afterPropertiesSet()方法,需要的朋友可以參考下
    2024-01-01
  • 揭開SQL中NULL的神秘面紗

    揭開SQL中NULL的神秘面紗

    表的字段默認允許存放NULL值,這意味著,您在插入記錄或者更新記錄時,可以不為該字段指定值,此時該字段將存儲NULL值,這篇文章將揭開SQL中NULL的神秘面紗。這個問題可能困擾著很多初級開發(fā)者
    2023-01-01
  • MySQL字段類型全面解讀

    MySQL字段類型全面解讀

    這篇文章主要介紹了MySQL字段類型,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • centos7.2下安裝mysql5.7數(shù)據(jù)庫的命令詳解

    centos7.2下安裝mysql5.7數(shù)據(jù)庫的命令詳解

    這篇文章主要介紹了centos7.2下安裝mysql5.7數(shù)據(jù)庫,文中給出了所有的命令,按照命令執(zhí)行就會安裝上 ,需要的朋友可以參考下
    2019-07-07
  • MySQL之PXC集群搭建的方法步驟

    MySQL之PXC集群搭建的方法步驟

    PXC 是一套 MySQL 高可用集群解決方案,本文主要介紹了MySQL之PXC集群搭建的方法步驟,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • MySQL分頁查詢的三種常用方法

    MySQL分頁查詢的三種常用方法

    在處理數(shù)據(jù)庫查詢時,我們經(jīng)常需要對結(jié)果進行分頁,以便在用戶界面上提供更好的瀏覽體驗,本文主要介紹了MySQL分頁查詢的三種常用方法,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • mysql installer web community 5.7.21.0.msi安裝圖文教程

    mysql installer web community 5.7.21.0.msi安裝圖文教程

    這篇文章主要為大家詳細介紹了mysql installer web community 5.7.21.0.msi,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • SQLyog連接MySQL8.0+報錯:錯誤碼2058的解決方案

    SQLyog連接MySQL8.0+報錯:錯誤碼2058的解決方案

    使用sqlyog連接數(shù)據(jù)庫過程中出現(xiàn)2058錯誤,出現(xiàn)的原因是因為MYSQL8.0對密碼的加密方式進行了改變,這篇文章主要給大家介紹了關(guān)于SQLyog連接MySQL8.0+報錯:錯誤碼2058的解決方案,需要的朋友可以參考下
    2024-07-07
  • mysql主從服務器配置特殊問題

    mysql主從服務器配置特殊問題

    如果修改了主服務器的配置,記得刪除從服務器上的master.info文件。否則從服務器使用的還是老配置,可能會導致錯誤。
    2010-12-12

最新評論