- 다음과 같은 에러가 나서 찾아봤더니 갱신 또는 삭제쿼리의 조건절에는 갱신 또는 삭제 대상이 되는 테이블이 쓸 수 없다네요.
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
)を使用することはできません。
通常、サブクエリがエラーになると、ステートメント全体がエラーになります。