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?