【发布时间】:2013-11-08 21:29:18
【问题描述】:
我正在尝试编写一个 MySQL 查询,如果用户在过去 24 小时内没有访问过博文,它将更新博文查看计数器。我正在尝试写这样的东西(但这不起作用):
IF EXISTS (
SELECT 1
FROM `posts-views`
WHERE
`ip` = '".$_SERVER['REMOTE_ADDR']."'
AND
`time` > ".($time-60*60*24)."
AND
`post` = $id
) THEN
NULL
ELSE
INSERT INTO `posts-views`
(`post`, `time`, `ip`, `user`)
VALUES
($id, $time, '".$_SERVER['REMOTE_ADDR']."', $me)
修复查询的正确方法是什么?
【问题讨论】:
-
你可以使用
insert ignore- 如果存在重复键的行,它将插入或直接传递而不会出错,它还有很好的功能on duplicate key update -
我不知道在这种情况下如何使用 INSERT IGNORE。我没有插入相同的数据。时间可能不同。
-
你可以,如果你添加只有日期部分的新列(用户每天可以投票 1 次)
-
Insert ignore需要唯一的密钥,我认为在这种情况下无法创建,因为time的条件:time > ....。 -
stackoverflow.com/questions/3164505/…此链接可能对您有所帮助。
标签: mysql