这是我正在尝试使用的查询。
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 个警告
查询:使用snap
0 行受影响
执行时间:0.001秒 传输时间:0.001秒
总时间:0.002 秒
查询:SET @id = 289
0 行受影响
执行时间:0.001秒 传输时间:0秒
总时间:0.001 秒
查询:SET @feedId = 5
0 行受影响
执行时间:0.002秒 传输时间:0秒
总时间:0.002 秒
查询:SET @statusid = 2
0 行受影响
执行时间:0.002秒 传输时间:0秒
总时间:0.002 秒
查询:SET @processId = 1
0 行受影响
执行时间:0.002秒 传输时间:0秒
总时间:0.002 秒
查询:SET @feedIdExists = ( SELECT EXISTS ( SELECT * FROM feed_statuses WHERE FeedId = @feedId))
0 行受影响
执行时间:0.002秒 传输时间:0秒
总时间:0.002 秒
查询:IF feedIdExists = 1 THEN UPDATE snap
.feed_statuses
SET ProcessId
= @processId , StatusId
= @statusId,ProcessEndDate
...
错误代码:1064
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 'IF feedIdExists = 1 THEN 附近使用的正确语法
更新snap
。feed_statuses
放
“Pr”位于第 1 行
执行时间:0秒 传输时间:0秒
总时间:0.002 秒
查询:ELSE INSERT INTO snap
.feed_statuses
(FeedId
, ProcessId
, StatusId
,流程开始日期
)值(@feedId,@processId,@s...
错误代码:1064
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 'ELSE 附近使用的正确语法
插入snap
.feed_statuses
(FeedId
,
第 1 行的“ProcessId”
执行时间:0秒 传输时间:0秒
总时间:0.002 秒
查询:END IF
错误代码:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行“END IF”附近使用的正确语法
执行时间:0秒 传输时间:0秒 总时间:0.002 秒
最佳答案
您可以使用Insert ... ON DUPLICATE UPDATE
来解决此问题。
注意:您必须首先拥有 UNIQUE
key ,我认为您已经拥有它。
INSERT INTO `snap`.`feed_statuses`
(`FeedId`,
`ProcessId`,
`StatusId`,
`ProcessStartDate`
)
VALUES
(@feedId,
@processId,
@statusId,
NOW());
ON DUPLICATE KEY
UPDATE
`ProcessId` = @processId ,
`StatusId` = @statusId ,
`ProcessEndDate` = NOW()
您必须检查此:INSERT...ON DUPLICATE KEY
关于Mysql 更新如果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33996327/