考慮以下查詢:獲取計數到時存在返回0()查詢是假
SELECT M.year, COUNT(C.eid)
FROM Card AS C, Month AS M
WHERE EXISTS(SELECT 1 FROM Charge AS CH
WHERE CH.usingcard=C.eid AND CH.year=M.year)
GROUP BY M.year
其中EXISTS是用來避免「充電」給定年/卡改變計數匹配的數量。 pb是我想爲每個可能的'Month'行生成的行,例如,當沒有匹配的'Charge'時,我希望得到0作爲計數,而我目前沒有任何行。
沒有EXISTS,我可以使用外連接。對於NOT EXISTS()的情況,我也可以使用一個查詢返回0的UNION。
任何人有更聰明的想法?
問題看起來不清楚 – sll
你'UNION'的建議肯定會工作(如將一個'OUTER JOIN',指出這不過是UNION'的'特殊情況)。那麼,「聰明」是什麼意思? – onedaywhen