使用select作为条件的mysql更新查询

时间:2012-08-16 10:04:18

标签: mysql sql-update sql

UPDATE reservation SET flag = "1" WHERE ipAddress = (SELECT ipAddress FROM reservation WHERE endDate < CURRENT_TIMESTAMP);

我试图使用此查询来更改日期已过期的预订表中这些条目的标志列。标志列默认为0.所以即时尝试将过期一次更改为1以进行识别。

我收到以下错误。

ERROR 1093 (HY000): You can't specify target table 'reservation' for updatein FROM clause

有人可以建议解决这个问题..

2 个答案:

答案 0 :(得分:3)

如果你在subselect中使用相同的表,你可以完全省略subselect。 为什么不用以下代替

UPDATE reservation 
SET flag = "1" 
WHERE endDate < CURRENT_TIMESTAMP

答案 1 :(得分:3)

您不需要内部SELECT。您只需根据flag

更新endDate状态
UPDATE reservation 
SET flag = "1" 
WHERE endDate < CURRENT_TIMESTAMP