2014-04-26 4 views
1

나는 약간의 연구를 해왔으며 UPDATE 문을 사용하여 SELECT 쿼리를 고의적으로 중첩하는 것이 가능하지 않다는 것을 발견했습니다. 분명히 테이블의 임시 가상 복사본을 만드는 것과 관련된 몇 가지 가능한 해결 방법이 있습니다. 동일한 테이블에서 동시에 업데이트하고 선택할 수 없기 때문입니다.중첩 된 SELECT 쿼리를 사용하는 MySQL UPDATE 쿼리

예제가 제대로 작동하지 않아서 사각형으로 돌아 왔습니다. 아래의 그림은 그것이 단순하다면 내가 원하는 것을 시각적으로 보여줄 것입니다.

중첩 된 SELECT 쿼리는 4 또는 5 개의 ID를 반환하며 각 행에 대해 0 열로 업데이트하려고합니다. 내가하고 싶은 것이 의미가 있기를 바랍니다.

미리 감사드립니다.

UPDATE 
    `my_table` 
SET 
    `my_column_1` = 0 
WHERE 
    `id` 
IN (
    SELECT 
     `id` 
    FROM 
     `my_table` 
    WHERE 
     `my_column_2` = 35 
    AND 
     `my_column_3` = 3 
    AND 
     `id` != 136 
) 

답변

3

왜 그냥 이런 WHERE을 사용합니까 :

UPDATE 
    `my_table` 
SET 
    `my_column_1` = 0 
WHERE 
    `my_column_2` = 35 
    AND `my_column_3` = 3 
    AND `id` != 136 

이 그냥 먼저 선택하지 않고 필요한 행을 업데이트합니다.

+0

FACEPALM !!!!!!! – Armin