首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

一個字段滿足多個條件查詢:GROUP BY + HAVING COUNT 實現關聯過濾

     編輯:MySQL 資料庫相關知識

場景

表 news_extinfo 存儲擴展屬性(ExtID, OptionValue),需查找同時滿足 ExtID=1,2,3 且 OptionValue=0 的 NewsID。

解決方案

SELECT * FROM news_extinfo
WHERE (ExtID = 1 AND OptionValue = 0)
   OR (ExtID = 2 AND OptionValue = 0)
   OR (ExtID = 3 AND OptionValue = 0)
GROUP BY NewsID
HAVING COUNT(*) = 3;

原理解析

  • WHERE 先篩選符合任一條件的行
  • GROUP BY NewsID 按新聞分組
  • HAVING COUNT(*) = 3 保留恰好命中 3 條件的組(即三個條件全滿足)

若條件數變動,只需調整 HAVING COUNT(*) = N。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved