我使用MySQL作爲數據庫。如何編寫SQL查詢來計算滿足具有多列排除的多列條件的值?
我有一個連接表與兩個字段ItemGroupID和CheckNumber適用於此查詢。
一個CheckNumber可以包含多個ItemGroupIDs和ItemGroupIDs可以包含多個CheckNumbers
我試圖計算(即滿足多個條件檢查的次數有項目組281和項目組274,但沒有項目組280或以任何記錄34。這裏的連接表的一個片段。
ItemGroupID | CheckNumber
----------- -----------
281 101
274 101
103 101
281 101
280 102
281 102
274 102
281 103
對於上述表,該查詢應僅返回計數1爲CheckNumber 101,因爲它具有兩個編號281和274,和它不包含280或34。其他支票號碼不應該返回一個計數。CheckNumber 102有一個排除的Gr支票上的oupID。 CheckNumber 103不包含281 AND 274.
下面是我寫的查詢。查詢的問題是它不會排除使用ItemGroupID 280或34的檢查。我認爲這是GROUP BY中Count函數的問題。但我不確定如何重寫它來解決這個問題。
SELECT COUNT(id.CheckNumber) AS Total
FROM ItemGroupMember igm
INNER JOIN ItemDetail id ON igm.ItemID = id.ItemID
WHERE igm.ItemGroupID IN (281,274)
AND NOT igm.ItemGroupID IN (280,34)
AND id.DOB BETWEEN 3/14/2017 AND 3/14/2017
AND id.LocationID = 22
GROUP BY id.CheckNumber HAVING COUNT(DISTINCT igm.ItemGroupID) = 2
感謝幫助。
缺少一個PIEC e關鍵信息 - 你有什麼問題。你清楚地解釋你想達到的目標,並展示你所嘗試過的,但並沒有解釋你的嘗試尚未奏效的原因。使用該信息快速更新您的問題 – Takarii
@Takarii感謝您的建議,只是使用我的查詢獲得的問題進行編輯。 –