以选择为条件的mysql更新查询
Posted
技术标签:
【中文标题】以选择为条件的mysql更新查询【英文标题】:mysql update query with select as criteria 【发布时间】:2012-08-12 16:01:05 【问题描述】: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
有人可以提出解决这个问题的方法吗..
【问题讨论】:
【参考方案1】:如果您在子选择中使用同一个表,您可以完全省略子选择。 你为什么不使用以下代替
UPDATE reservation
SET flag = "1"
WHERE endDate < CURRENT_TIMESTAMP
【讨论】:
天哪,我只是想把事情复杂化!!非常感谢:)【参考方案2】:你不需要内部的SELECT
。您只需要根据endDate
更新flag
状态
UPDATE reservation
SET flag = "1"
WHERE endDate < CURRENT_TIMESTAMP
【讨论】:
以上是关于以选择为条件的mysql更新查询的主要内容,如果未能解决你的问题,请参考以下文章