MySQL 数据库 [Err] 1093 - You can't specify target table 'd_alarm' for update in FROM clause
更新数据库时,发生如下错误:
[Err] 1093 - You can't specify target table 'd_alarm' for update in FROM clause
SQL 语句为:
UPDATE d_alarm SET alarmEndTime = '2015-09-11 11:00:24.17' WHERE  (select  case when measurePointId  is null  then 0  else measurePointId end as measurePointId from d_alarm)  = null  AND alarmCode = '29' AND eId = 22
解决方法:
把要更新的几列数据查询出来做为一个第三方表,然后筛选更新。
改为:
UPDATE d_alarm d1 SET d1.alarmEndTime = '2015-09-11 11:00:24.17' WHERE 
 (select  case when d2.measurePointId  is null  then 0  else d2.measurePointId end as measurePointId from (SELECT * FROM d_alarm) d2) =0 AND alarmCode = '29' AND eId = 22
 
    