gpt4 book ai didi

MySQL - "insert if not exists"查询?

转载 作者:行者123 更新时间:2023-11-29 06:43:45 25 4
gpt4 key购买 nike

我正在尝试编写一个 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,但像下面这样的东西应该可以完成这项工作:

  INSERT INTO `posts-views`
(`post`, `time`, `ip`, `user`)
SELECT $id, $time, '".$_SERVER['REMOTE_ADDR']."', $me
FROM dual
WHERE NOT EXISTS (
SELECT 1
FROM `posts-views`
WHERE
`ip` = '".$_SERVER['REMOTE_ADDR']."'
AND
`time` > ".$time-60*60*24."
AND
`post` = $id
)

我完全省略了转义变量,这绝对应该在实际代码中完成。

已更新 - 添加了from dual 以避免语法错误

关于MySQL - "insert if not exists"查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19868827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com