我有一个名为“ tempaction”的临时表。我想选择“ ActionID”与另一个表相匹配的行。我收到安全更新模式错误,我认为ActionID是复合主键的一部分。但是,当我尝试
UPDATE action
SET Status = 'Sent'
WHERE ActionID IN( select ActionID from tempaction)
AND DeviceID IN( select DeviceID from tempaction);
我得到的临时表无法重新打开错误。
过去,检查主键的两个部分是否已解决安全更新错误。我也了解到我不能在同一条语句中两次引用临时表。
如何从此临时表中选择具有匹配的ActionID或具有匹配的ActionID和DeviceID的行?
临时表
CREATE TEMPORARY TABLE tempaction (ActionID BIGINT)
SELECT *
FROM action
WHERE DeviceID = '1234'
AND Status = 'Pending'
答案 0 :(得分:0)
您可以尝试使用Join with子查询进行更新。
UPDATE action a
JOIN
tempaction t ON a.ActionID = t.ActionID
SET
a.Status = 'Sent';