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

我试图使用此查询来更改保留表中日期已过期的那些条目的标志列。flag 列默认为 0。所以我试图将 expired once 更改为 1 以供我识别。

我收到以下错误。

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

有人可以提出解决这个问题的方法吗..

4

2 回答 2

3

如果您在子选择中使用同一个表,您可以完全省略子选择。你为什么不改用以下

UPDATE reservation 
SET flag = "1" 
WHERE endDate < CURRENT_TIMESTAMP
于 2012-08-16T10:07:05.787 回答
3

你不需要内在的SELECT。您只需要flag根据endDate

UPDATE reservation 
SET flag = "1" 
WHERE endDate < CURRENT_TIMESTAMP
于 2012-08-16T10:07:16.837 回答