我尝试根据我找到的另一个问题的答案运行SQL查询,以便在行存在时更新表,否则创建行:
UPDATE metric_target SET target1=1 WHERE userid=1
IF ROWCOUNT = 0
INSERT INTO metric_target (target2) VALUES (1);
当我运行该查询时,我收到以下错误:
1064 - 您的SQL语法出错;检查与您的MySQL服务器版本对应的手册,以便在' IF ROWCOUNT = 0附近使用正确的语法 INSERT INTO metric_target(target2)VALUES(1)'第3行
知道问题可能是什么? 我使用的是SQL 5.5.39版本
答案 0 :(得分:1)
如果user_id
是您的唯一索引,那么最好做INSERT INTO ... ON DUPLICATE KEY UPDATE...
像这样的东西
INSERT INTO metric_target (userid, target2) VALUES (1, 1)
ON DUPLICATE KEY UPDATE target2=1;
答案 1 :(得分:0)
试试这个:
UPDATE metric_target SET target1=1 WHERE userid=1;
IF (ROW_COUNT() = 0) THEN
BEGIN
INSERT INTO metric_target (target2) VALUES (1);
END;
END IF;
答案 2 :(得分:0)
我认为它必须是一个功能......试试这个
如果ROW_COUNT()= 0