我可以在mysql Query中使用条件逻辑吗?

时间:2013-02-08 18:11:10

标签: mysql sql

我一直在与垃圾邮件作斗争,所以我想限制用户每天不要联系40位以上的新成员。

我当前用于跟踪邮件的数据库架构如下所示

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小时内考虑唯一收件人,但排除从一开始就响应此发件人的任何数量的收件人?

1 个答案:

答案 0 :(得分: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)

看起来您的表格没有任何消除个别消息消息的方式/正在回复哪条消息,这可能是一个问题。