MySql使用相关子查询更新日期

时间:2012-04-24 16:18:51

标签: mysql sql correlated-subquery

我一直在尝试使用相关子查询将表中所有行的日期更新11天。我遇到的一个问题是MySql不会让我更新我在子查询中选择的表。我能够通过将子查询的结果保存为临时表来解决这个问题。当我在子查询中为where子句定义了值时,这种方法有效。但是,当我尝试引用外部查询(即:vm.psname = v.psname)时,我在'where子句'中得到“unknown column'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)

我还看过使用内连接(example from previous post)。但是,我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

我没有尝试过,但为什么你不只是做DATE_ADD,就像这个

 UPDATE cloud.vms set expirationdate = DATE_ADD(expirationdate, INTERVAL 11 DAY) ;