0

相関サブクエリを使用して、テーブル内のすべての行の日付を 11 日更新しようとしています。私が遭遇した問題の 1 つは、サブクエリで選択しているテーブルを 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 に答える