MySQL错误,特别是If Exist语句

时间:2016-12-01 04:43:28

标签: mysql

我尝试使用mySQL中的If Exists语句,但我从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);

2 个答案:

答案 0 :(得分:0)

您的语句中存在语法错误。在EXISTS之后缺少“THEN”关键字,在结尾处缺少“END 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在答案中说的是一种更有效的方法。

答案 1 :(得分:-1)

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

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

此查询会在您的表格中插入('john', 5'),但如果主键用户名john已存在,那么它将指向4。