doudou5023 2013-11-04 17:35
浏览 53
已采纳

Mysql - 每天投票一次

I have an entry where users can vote once per day. I''m saving this in my database.
Now I need to check, if the user is allowed to vote on this entry again (after one day).

So far I got this:

SELECT count(*) 
FROM entries e
WHERE e.voterID =1
AND e.pID =1
AND e.date < NOW( ) - INTERVAL 1 
DAY   

But this doesn't work to well, when in the DB there are more entries for the voter and pid. A voter can vote multiples times for the same entry.
if there are more entries for the same user and the same projects, count(*) fives me a value more then 1. etc.

How do I check if the user is allowed to vote again properly?
Thanks.

  • 写回答

1条回答 默认 最新

  • dourao1877 2013-11-04 17:48
    关注

    Did the present user vote for the present pID in the most recent 24 hours? If so, the votecount result in this query will be more than zero.

     SELECT count(*) AS votecount
       FROM entries AS e
      WHERE e.voterID = 1
        AND e.pID = 1
        AND e.date >= NOW() - INTERVAL 1 DAY
    

    Notice the >= comparison for the date. Your sample code says <.

    You will need a compound index on (voterID, pID, date) when you need this query to run efficiently on a large table.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?