这个SQL语法有什么问题?

时间:2015-03-11 16:54:15

标签: mysql

我尝试根据我找到的另一个问题的答案运行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版本

3 个答案:

答案 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