Mysql
我想為那些有一個或多個條目等於零會費的人選擇所有記錄
DUE_TABLE ID LNAME FNAME 到期日 3456 史密斯鮑勃 12.50 2014-10-01 3456 史密斯鮑勃 0.00 2014-11-01 3456 史密斯鮑勃 12.50 2014-12-01 9450瓊斯簡12.50 2014-10-01 9450瓊斯簡12.50 2014-11-01 9450瓊斯簡12.50 2014-12-01 6074 建議湯姆 12.50 2014-10-01 6074 蘇格斯湯姆 0.00 2014-11-01 6074 建議湯姆 12.50 2014-12-01
我想為那些有一個或多個零會費條目的人輸出所有記錄,無論是否支付了會費,如下所示:
3456 史密斯鮑勃 12.50 2014-10-01 3456 史密斯鮑勃 0.00 2014-11-01 3456 史密斯鮑勃 12.50 2014-12-01 9450 建議湯姆 12.50 2014-10-01 9450 蘇格斯湯姆 0.00 2014-11-01 9450 建議湯姆 12.50 2014-12-01
請注意,Jane Jones 被排除在外,因為她支付了所有會費。Bob Smith 和 Tom Suggs 都列出了他們的零會費和正會費條目。
任何人都知道我怎樣才能達到這個結果?
SELECT DISTINCT ID FROM tbl WHERE DUES = 0
會得到頑皮的人的ID,對嗎?所以現在你需要做一個“自我加入”來獲取其餘的數據:
SELECT DISTINCT a.* FROM tbl AS a JOIN tbl AS b USING(ID) WHERE b.DUES = 0 ORDER BY a.ID, a.DATE
要麼…
SELECT * FROM tbl AS a WHERE EXISTS ( SELECT ID FROM tbl WHERE DUES = 0 AND ID = a.ID ) ORDER BY ID, DATE