MySQL You can’t specify target table 'progress' for update in FROM clause
错误 sql
UPDATE alarm_progress SET operator = '1' WHERE id IN
( SELECT id FROM alarm_progress WHERE operator = '系统' )
错误原因
[Err] 1093 - You can't specify target table 'progress' for update in FROM clause
不能在同一个 sql 语句中,先 select 同一个表的某些值,然后再 update 这个表。
解决方案
将查询出来的值放入临时表中,再查询一次。
UPDATE alarm_progress SET operator = '1' WHERE id IN
( SELECT * FROM
( SELECT id FROM alarm_progress WHERE operator = '系统' ) t1
)
回顾 2024.7.31
这是我写的 SQL?为什么会这么写啊?难道不应该是下面这个:
UPDATE alarm_progress SET operator = '1' WHERE operator = '系统'