插入玛丽亚数据库10中插入数据的SQL语法错误?

时间:2019-01-23 10:15:42

标签: sql mariadb

我可以在自己的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行

请帮助

4 个答案:

答案 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实际上除了防止错误之外什么也不做。

为什么这样更好?

  • 数据库保证数据的完整性,因此您知道它是正确的。
  • 插入相同值的多个线程不会“偶然”插入重复项。
  • 不需要重复查询中的常量值,这会引入错误。