我有一个条目,用户每天可以投票一次。我将它保存在我的数据库中 现在我需要检查,是否允许用户再次对此条目进行投票(一天后)。
到目前为止,我得到了这个:
SELECT count(*)
FROM entries e
WHERE e.voterID =1
AND e.pID =1
AND e.date < NOW( ) - INTERVAL 1
DAY
但这并不好用,在数据库中有更多的选民和pid条目。选民可以对同一条目投票倍数 如果同一个用户和相同项目有更多条目,则count(*)五是一个超过1的值。等等。
如何检查用户是否可以再次正确投票? 感谢。
答案 0 :(得分:0)
目前的用户是否在最近的24小时内投票支持目前的pID?如果是这样,此查询中的votecount
结果将大于零。
SELECT count(*) AS votecount
FROM entries AS e
WHERE e.voterID = 1
AND e.pID = 1
AND e.date >= NOW() - INTERVAL 1 DAY
注意日期的>=
比较。您的示例代码显示为<
。
当您需要此查询在大型表上高效运行时,您将需要一个复合索引(voterID,pID,date)。