2013-08-13 2 views
0

나를 위해 필요한 조건을 가진 스크립트를 만들었습니다. 그리고 제대로 작동합니다. 그러나 많은 행에이 스크립트를 적용해야합니다.. 그리고 id는 15뿐입니다.subselect가있는 UPDATE 문

UPDATE my_table SET my_field = 
    (SELECT 
    CASE WHEN position('a' in my_field) = 0 THEN my_field 
      WHEN position('a' in my_field) = 1 THEN substring(my_field from 1 for 5) 
      WHEN position('a' in my_field) > 1 THEN substring(my_field from 2 for 5) 
    END 
    FROM my_table WHERE id = 15) 
WHERE id = 15 

이 스크립트는 특정 조건이 수행되는 행에 적용하고 싶습니다. 예를 들어 WHERE my_field LIKE '%ab%'을 쓰고 싶습니다. 하지만 문제는 서브 선택이 인 것입니다. 따라서 별도의 스크립트를 적용하여 필요한 모든 ID를 얻은 다음이 스크립트를 별도의 스크립트에서 수동으로 대체하여이 스크립트를 적용 할 수 있습니다. 하지만 단일 쿼리로 자동으로 적용하고 싶습니다.

+0

그래서, 당신은 ID의 루프 루프에서 현재 하나를 사용하여 ID를 대체 목록을 통해 목록을 얻으려면을, 예를 들면? – christiandev

+0

가능하면 가능합니다. –

+0

T-SQL에서 코드를 작성하기 시작한 후 postgresql을 사용하고 있다는 것을 알았으므로이 코드는 유용하지 않습니다. 따라서이 링크를 살펴보십시오. http://www.postgresql.org/docs/8.4/static/plpgsql -control-structures.html – christiandev

답변

1

그것은 당신이 :)

이 시도 생각하는 것보다 쉽다 :

UPDATE my_table 
SET my_field = 
    CASE 
      WHEN position('a' in my_field) = 0 THEN my_field 
      WHEN position('a' in my_field) = 1 THEN substring(my_field from 1 for 5) 
      WHEN position('a' in my_field) > 1 THEN substring(my_field from 2 for 5) 
    END