0

我一直在尝试使用相关子查询将表中所有行的日期更新 11 天。我遇到的一个问题是 MySql 不会让我更新我在子查询中选择的表。我可以通过将子查询的结果保存为临时表来解决这个问题。当我在子查询中为 where 子句定义了值时,这将起作用。但是,当我尝试引用外部查询(即:vm.psname = v.psname)时,我在 'where 子句'中得到“未知列 'v.psname' 这是我的查询:

UPDATE cloud.vms v SET expirationdate=(
    SELECT date FROM (
        SELECT DATE_ADD(
            (SELECT expirationdate
             FROM cloud.vms vm
             WHERE vm.psname=v.psname),
             INTERVAL 11 DAY) 
        AS date)
    AS tmptbl)

我还研究了使用内部联接(上一篇文章中的示例)。但是,我不知道该怎么做。

4

1 回答 1

1

我没试过,但你为什么不直接做 DATE_ADD,像这样

 UPDATE cloud.vms set expirationdate = DATE_ADD(expirationdate, INTERVAL 11 DAY) ;
于 2012-04-24T16:26:43.347 回答