我可以在自己的xampp中正确运行它,但是当我在服务器中运行它会给我错误
INSERT INTO `likes`(`id`, `PID`, `UID`)
SELECT NULL,155,68
WHERE NOT EXISTS(SELECT id FROM likes t2 WHERE t2.PID = 115 AND t2.UID=68)
错误是
1064-您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册以使用正确的语法 near'WHERE NOT EXISTS(SELECT id FROM FROM like t2 WHERE t2.PID = 115 AND t2.UID = 68)'在第3行
请帮助
答案 0 :(得分:0)
如果您要插入新值:
INSERT INTO `likes`(`id`, `PID`, `UID`)
values (NULL,155,68)
如果您的范围是更新现有的元组:
update likes
set `id`=NULL, `PID`=155, `UID`=68
WHERE NOT EXISTS(SELECT id FROM likes t2 WHERE t2.PID = 115 AND t2.UID=68);
如果您的范围是添加一个不存在的元组:
delimiter $$
create procedure ins_m()
BEGIN
IF NOT EXISTS (SELECT id FROM likes t2 WHERE t2.PID = 115 AND t2.UID=68)
BEGIN
INSERT INTO `likes`(`id`, `PID`, `UID`)
values (NULL,155,68)
END IF
END
$$
delimiter ;
-- to execute the procedure
exec ins_m
您的问题不是很清楚
答案 1 :(得分:0)
您可以在下面尝试-
INSERT INTO `likes`(`id`, `PID`, `UID`)
SELECT NULL,155,68 from likes
WHERE NOT EXISTS(SELECT id FROM likes t2 WHERE t2.PID = 115 AND t2.UID=68)
答案 2 :(得分:0)
请尝试以下
IF NOT EXISTS(SELECT id FROM likes t2 WHERE t2.PID = 115 AND t2.UID=68)
INSERT INTO `likes`(`id`, `PID`, `UID`)
values (NULL,155,68)
答案 3 :(得分:0)
SELECT
如果还具有FROM
,则需要WHERE
。如果需要,可以使用FROM dual
。
但是,您正在尝试防止重复,但这不是最好的方法。相反,让数据库使用唯一的索引或约束来工作:
alter table likes add constraint unq_likes_pid_uid unique (pid, uid);
然后,您可以表达自己想要做的事情:
INSERT INTO `likes`(`PID`, `UID`)
VALUES (155, 68)
ON DUPLICATE KEY UPDATE pid = VALUES(pid);
on duplicate key
实际上除了防止错误之外什么也不做。
为什么这样更好?