• 다음과 같은 에러가 나서 찾아봤더니 갱신 또는 삭제쿼리의 조건절에는 갱신 또는 삭제 대상이 되는 테이블이 쓸 수 없다네요.
  • Error 1093 (ER_UPDATE_TABLE_USED)
    SQLSTATE = HY000
    Message = "You can't specify target table 'x' for update in FROM clause"

    このエラーは次のような場合に発生する。

    UPDATE t1 SET column2 = (SELECT MAX(column1) FROM t1);

サブクエリは SELECT ステートメントと同じく、UPDATE ステートメントや DELETE ステートメントでも正式に使用できるので、UPDATE ステートメント内の割り当てにサブクエリを使用しても問題ありません。 しかし、サブクエリの FROM 節と更新対象の両方に同じテーブル(この場合、テーブル t1)を使用することはできません。

通常、サブクエリがエラーになると、ステートメント全体がエラーになります。

+ Recent posts