我尝试使用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);
答案 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。