[英]What’s causing the syntax error in the IF EXISTS line in my SQL query?
我正在运行此SQL查询:
IF EXISTS (SELECT * FROM score WHERE username='ms')
UPDATE score SET score='30' WHERE username='ms'
ELSE
INSERT INTO score (username,score) VALUES ('ms','30')
但我不断收到此语法错误:
1064-您的SQL语法有误; 检查与您的MySQL服务器版本相对应的手册,以找到在
IF EXISTS (SELECT * FROM score WHERE username='ms') UPDATE score SET score='30'
附近使用正确语法的正确语法IF EXISTS (SELECT * FROM score WHERE username='ms') UPDATE score SET score='30'
在第一行
我究竟做错了什么?
if
仅在存储过程,函数和触发器的编程块中允许控制流, 请勿将此函数与if()
函数混淆,该函数是任何表达式中都允许使用的非标准MySQL扩展。
但是,您可以使用replace
或on duplicate key update
。 首先,在username
上创建一个唯一索引:
create unique index idx_score_username on score(username);
然后执行以下插入操作:
INSERT INTO score (username, score)
VALUES ('ms', 30)
ON DUPLICATE KEY UPDATE score = VALUES(score);
请注意,我从'30'
删除了单引号。 如果score1
是数字(我认为是合理的假设),则使用数字常量而不是字符串常量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.