2013-02-08 85 views
0

我一直在爭取垃圾郵件,所以我想限制用戶每天不超過40個新的獨特會員。跟蹤消息我可以在我的MySQL Query中使用條件邏輯嗎?

我目前的數據庫架構看起來像這樣

id sender receiver content date     belong_to 
100 5  7  send1 2013-02-08 09:31:36 5 
101 5  7  send1 2013-02-08 09:31:36 7 
102 7  5  recevd 2013-02-08 09:32:18 7 
103 7  5  recevd 2013-02-08 09:32:18 5 

我目前的查詢看起來像這樣回到在過去24小時內不同的收件人數:

SELECT COUNT(DISTINCT(receiver)) 
FROM `messages` 
WHERE sender = 5 
AND date >= DATE_SUB(NOW(), INTERVAL 1 DAY) 

輸出基於在這個例子中是1,但由於用戶的迴應,我希望這個排除在計數之外。

基於我的示例數據,我想排除這兩個從我的計數,因爲接收方已響應發件人。我如何在過去24小時內對唯一收件人進行帳戶處理,但排除自開始以來對此發件人作出回覆的任何數量的收件人?

+0

根據上面的例子,輸出是什麼? – 2013-02-08 18:13:42

+0

@JW我剛剛添加了實際結果和預期結果 – Paul 2013-02-08 18:15:37

回答

3

它會是這個樣子:

SELECT COUNT(DISTINCT(receiver)) 
FROM `messages` m, 
WHERE sender = X 
AND NOT EXISTS(SELECT * FROM `messages` m2 where receiver = X and sender = m.reciever) 
AND date >= DATE_SUB(NOW(), INTERVAL 1 DAY) 

看起來不像你的表具有多義性,其消息被答覆單個郵件/,這可能是一個問題的任何方式。

相關問題