MySQL错误,特别是IF存在语句



我尝试使用MySQL的IF存在语句,但我从MySQL中获得了一个错误,说有#1064语法错误,但我真的找不到。有我的代码:

If EXISTS (select * from points where username= 'john')
update points set points = "4" where username='john'
ELSE
insert into points (username, points) values ('john', 5);

您的语句中有一个语法错误。在存在之后,您缺少"然后"关键字,最后" IF",并且在Update语句中也缺少半分号。如果您仍然想使用此语句,应该这样:

IF EXISTS (select * from points where username= 'john') THEN
    UPDATE points set points = "4" where username = 'john';
ELSE
    INSERT into points (username, points) values ('john', 5);
END IF;

请注意,此语句只能在常规中使用,例如存储过程或存储功能,而不是在正常的SQL中。

另一方面,@timbiegeleisen在答案中说的是一种更有效的方法。

实现逻辑的一种方法是在执行INSERT时使用ON DUPLICATE KEY UPDATE

INSERT INTO points (username, points)
VALUES ('john', 5)
ON DUPLICATE KEY UPDATE points=4

此查询将('john', 5')插入表中,但是如果主要键用户名john已经存在,则将指向4。

最新更新