繁体   English   中英

是什么导致SQL查询的IF EXISTS行中出现语法错误?

[英]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扩展。

但是,您可以使用replaceon 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM