我有一个名为“ 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'

最佳答案

您可以尝试使用通过子查询连接的更新。

UPDATE action a
JOIN
    tempaction t ON a.ActionID = t.ActionID
SET
    a.Status = 'Sent';

关于mysql - 临时表上的多个条件-MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51359562/

10-10 04:38