我正在嘗試評估系統中某個給定月份中進行的事務在對帳過程中的啓動次數。SELECT IN失敗 - 大型數據集
交易參考可以在上個月創建,因此我試圖從最終計數中排除這些交易 - 第一個想法是使用「WHERE IN」類型的方法,但結果始終爲0,這是肯定的當我單獨執行查詢時出錯,子查詢中有條目應該被排除。
我讀過「WHERE IN」類型的查詢不可靠,特別是當子查詢中有大量數據集返回時,但我不知道如何在這種情況下重新實現這個目標,並且如果這樣做的方式存在缺陷,則可以繼續前進。
當前查詢如下 - 感謝您的幫助:
SELECT Count(DISTINCT TransactionRef)
FROM Payments
WHERE Month(PaymentDate) = 8
AND Year(PaymentDate) = 2011
AND TransactionRef NOT IN
(SELECT DISTINCT TransactionRef
FROM Payments WHERE PaymentDate < '20110801')
編輯 確定進一步的答案,這似乎是一個空值在做我錯了...感謝 - 這裏是編輯的代碼萬一有人絆倒在這裏的未來:
SELECT Count(DISTINCT TransactionRef)
FROM Payments
WHERE Month(PaymentDate) = 8
AND Year(PaymentDate) = 2011
AND TransactionRef NOT IN
(SELECT DISTINCT TransactionRef
FROM Payments WHERE TransactionRef IS NOT NULL AND PaymentDate < '20110801')
您probaly有''TransactionRef一個'NULL'值。這總是會導致'NOT IN'返回零結果。 –
順便說一句:你在哪裏讀過''WHERE IN「類型的查詢是不可靠的?我建議無視來自同一來源的任何其他內容。 –
謝謝:)谷歌的力量完全發送一個在一個荒謬的切線看起來。 – Chris