我有两个表,一个是选项表(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
我搜索解决方案导致我尝试使用别名的临时表,但我对它的尝试都导致了语法错误。任何帮助将不胜感激。
答案 0 :(得分:3)
您不能使用查询,因为MySQL在更新子句中不支持
目前,您无法更新表并从子查询中的同一表中进行选择。
请尝试以下
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`