mysql - 临时表上的多个条件 - MySQL
问题描述
我有一个名为“tempaction”的临时表。我想选择“ActionID”与另一个表匹配的行。我收到了安全更新模式错误,我认为 ActionID 是复合主键的一部分。但是,当我尝试
UPDATE action
SET Status = 'Sent'
WHERE ActionID IN( select ActionID from tempaction)
AND DeviceID IN( select DeviceID from tempaction);
我得到临时表无法重新打开错误。
过去检查主键的两个部分都可以解决安全更新错误。我也明白我不能在同一个语句中引用一个临时表两次。
如何从此临时表中选择具有匹配 ActionID 或匹配 ActionID AND DeviceID 的行?
临时表
CREATE TEMPORARY TABLE tempaction (ActionID BIGINT)
SELECT *
FROM action
WHERE DeviceID = '1234'
AND Status = 'Pending'
解决方案
您可以尝试使用 Join 和子查询进行更新。
UPDATE action a
JOIN
tempaction t ON a.ActionID = t.ActionID
SET
a.Status = 'Sent';
推荐阅读
- google-container-os - 如何向 COS 的开发者提供反馈?
- python - 在 Web 浏览器中显示 Linux 命令的输出 - Python
- firebase - 在内部托管 Firebase 实时数据库
- jenkins - Jenkins xcode 插件错误地报告没有配置开发人员配置文件
- ajax - Datatables Ajax 无法渲染 Vue 组件
- php - Stripe Checkout Link onClick 不处理付款
- date - ionic 3 dateTime - displayFormat="HH:mm [Uhr]" 将 Uhr 中的 h 转换为时间,如何忽略它?
- c++ - 如果索引不是整数,我们如何在 C++ 中插入哈希表
- sql-server - SQL 按列分组
- continuous-deployment - KeyVault ARM 模板在重新部署时会覆盖机密