Mysql

我想為那些有一個或多個條目等於零會費的人選擇所有記錄

  • July 11, 2015
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

引用自:https://dba.stackexchange.com/questions/106660