这是我要使用的查询。
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秒
查询: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然后更新
snap
。feed_statuses
SET ProcessId
= @processId,StatusId
= @statusId,ProcessEndDate
...错误代码:1064
您的SQL语法有误。查看与您的MySQL服务器版本相对应的手册,以在'IF feedIdExists = 1 THEN附近使用正确的语法
更新
snap
。feed_statuses
组
第1行的“ Pr”
执行时间:0秒
传输时间:0秒
总时间:0.002秒
查询:ELSE INSERT INTO
snap
。feed_statuses
(FeedId
,ProcessId
,StatusId
,ProcessStartDate
)值(@ 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
密钥,而且我认为您已经拥有它。
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 - MySQL更新如果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33996327/