无法更新目标表

时间:2012-05-09 19:53:51

标签: mysql sql

我有两个表,一个是选项表(rot),它具有一组房间的度量,另一个具有房间的当前状态(rt)。我希望有一个每日事件,使用存储在rot中的值来更新rt中的cost_to_date。

当我尝试SQL时:

UPDATE room_tbl SET COST_TO_DATE_rt = COST_TO_DATE_rt + (
SELECT PerDiem_rot FROM room_options_tbl, room_tbl 
WHERE `ROOM_OPT_ID_rot` = `ROOM_OPT_ID_rt` 
    AND `ADULT_COUNT_rot` = `ADULT_COUNT_rt`)

我收到错误:#1093 - You can't specify target table 'room_tbl' for update in FROM clause

我搜索解决方案导致我尝试使用别名的临时表,但我对它的尝试都导致了语法错误。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

您不能使用查询,因为MySQL在更新子句中不支持

来自13.2.10. UPDATE Syntax

  

目前,您无法更新表并从子查询中的同一表中进行选择。

请尝试以下

UPDATE room_options_tbl, room_tbl
SET COST_TO_DATE_rt = COST_TO_DATE_rt + PerDiem_rot 
WHERE `ROOM_OPT_ID_rot` = `ROOM_OPT_ID_rt` 
    AND `ADULT_COUNT_rot` = `ADULT_COUNT_rt`