1

我有两张表,一张是选项表(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

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

4

1 回答 1

3

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

13.2.10 开始。更新语法

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

而是尝试以下

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`
于 2012-05-09T20:01:10.413 回答