Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql更新如果_Mysql_If Statement - Fatal编程技术网

Mysql更新如果

Mysql更新如果,mysql,if-statement,Mysql,If Statement,这就是我试图使用的查询 SET @id = 289; SET @feedId = 5; SET @statusid = 2; SET @processId = 1; SET @feedIdExists = ( SELECT EXISTS ( SELECT * FROM feed_statuses WHERE FeedId = @feedId)); IF feedIdExists = 1 THEN

这就是我试图使用的查询

  SET @id = 289;
    SET @feedId = 5;
    SET @statusid = 2;
    SET @processId = 1;

    SET @feedIdExists = (
     SELECT EXISTS (
       SELECT *
       FROM feed_statuses
       WHERE FeedId = @feedId));

    IF feedIdExists = 1 THEN
     UPDATE `snap`.`feed_statuses` 
      SET
      `ProcessId` = @processId , 
      `StatusId` = @statusId , 
      `ProcessEndDate` = NOW()
      WHERE
      `FeedId` = @feedId;
    ELSE
     INSERT INTO `snap`.`feed_statuses` 
      (`FeedId`, 
      `ProcessId`, 
      `StatusId`, 
      `ProcessStartDate`
      )
      VALUES 
      (@feedId,
      @processId,
      @statusId,
      NOW());
    END IF;
大家好, if语法有3个错误。 我不明白。 为什么它不能正常工作

执行了9个查询,6个成功,3个错误,0个警告

查询:使用快照

0行受影响

执行时间:0.001秒 传输时间:0.001秒

总时间:0.002秒 查询:SET@id=289

0行受影响

执行时间:0.001秒 传输时间:0秒

总时间:0.001秒 查询:设置@feedId=5

0行受影响

执行时间:0.002秒 传输时间:0秒

总时间:0.002秒 查询:设置@statusid=2

0行受影响

执行时间:0.002秒 传输时间:0秒

总时间:0.002秒 查询:SET@processId=1

0行受影响

执行时间:0.002秒 传输时间:0秒

总时间:0.002秒 查询:设置@feedIdExists=SELECT EXISTS从feed_状态中选择*,其中FeedId=@FeedId

0行受影响

执行时间:0.002秒 传输时间:0秒

总时间:0.002秒 查询:如果feedIdExists=1,则更新snap.feed\u状态集ProcessId=@ProcessId,StatusId=@StatusId,ProcessEndDate

错误代码:1064 您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解可在“IF feedIdExists=1”附近使用的正确语法 更新snap.feed_状态 设置 `1号线的Pr

执行时间:0秒 传输时间:0秒

总时间:0.002秒 查询:ELSE插入snap.feed\状态FeedId、ProcessId、StatusId、ProcessStartDate值@FeedId、@ProcessId、@s

错误代码:1064 您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用“ELSE”附近的正确语法 插入snap.feed_状态 FeedId, `第1行的ProcessId'

执行时间:0秒 传输时间:0秒

总时间:0.002秒 查询:如果结束

错误代码:1064 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“END IF”附近使用的正确语法

执行时间:0秒 传输时间:0秒 总时间:0.002秒

您可以使用插入。。。重复更新以解决此问题

注意:您必须先拥有唯一的密钥,我想您已经拥有了它

INSERT INTO `snap`.`feed_statuses` 
  (`FeedId`, 
  `ProcessId`, 
  `StatusId`, 
  `ProcessStartDate`
  )
  VALUES 
  (@feedId,
  @processId,
  @statusId,
  NOW());
ON DUPLICATE KEY
UPDATE
  `ProcessId` = @processId , 
  `StatusId` = @statusId , 
  `ProcessEndDate` = NOW()

您必须选中此项:

粘贴您收到的错误。如果我想检查它是否为2,那么在你的问题中,你只检查它是否存在,以及这个问题的答案。我为您提供的链接包含此操作的完整文档。所以我不明白你会在哪里检查它是否是2?