update ITEMS_ALARM_LIST set AlarmEndtime = now() where AlarmID = (select max(alarmid) from ITEMS_ALARM_LIST where EquipmentID = 1 and Alarm_Property = 1)错误提示:You can't specify target table 'ITEMS_ALARM_LIST' for update in FROM clause

解决方案 »

  1.   


    UPDATE ITEMS_ALARM_LIST t1,ITEMS_ALARM_LIST t2
    SET t1.AlarmEndtime=now()
    WHERE t1.AlarmID=MAX(t2.AlarmID) AND t2.EquipmentID=1 AND t2.Alarm_Property=1;
      

  2.   

    MYSQL不支持这种写法
    update ITEMS_ALARM_LIST a,
    (select max(alarmid) as ma from ITEMS_ALARM_LIST where EquipmentID = 1 and Alarm_Property = 1) b
    set a.AlarmEndtime = now() where a.AlarmID = b.ma
      

  3.   

    update ITEMS_ALARM_LIST a, 
    (select max(alarmid) as max_id from ITEMS_ALARM_LIST where EquipmentID = 1 and Alarm_Property = 1) b 
     set a.AlarmEndtime = now() where a.AlarmID = b.max_id
      

  4.   

    mysql 的语句中有一些限制。update ITEMS_ALARM_LIST a,(select max(alarmid) as max_alarmid from ITEMS_ALARM_LIST where EquipmentID = 1 and Alarm_Property = 1) b
    set a.AlarmEndtime = now()
    where a.AlarmID=b.max_alarmid