2014-02-27 3 views
0

나는 조건 내 경우에 충족되는 경우 테이블 업데이트해야 할 것> 1.갱신 조건이 충족되는 경우를 사용

이을 (제목으로 게시물 그룹에서 선택 카운트 (제목) 제목 등을) 내 쿼리가 작동하지 않고 무엇을해야할지 알 수 없습니다.

UPDATE posts SET text= CASE 
WHEN (select count(title) as title from posts group by title) > 1 THEN 'Y' ELSE 'N' 
END 
WHERE id <=8; 

내가 여기서 잘못하고있는 것은 무엇입니까? 미리 감사드립니다.

답변

4

쿼리의 문제점은 스칼라 하위 쿼리에 group by이 있다는 것입니다. 이로 인해 스칼라 하위 쿼리에 여러 행이 생기므로 오류가 발생합니다. 나는 테이블의 레이아웃을 잘 모르겠지만, 아마도 당신은 상관 하위 쿼리를 사용하려면 :

UPDATE posts p 
    SET text = (CASE WHEN (select count(title) from posts p2 where p.title = p2.title) > 1 
        THEN 'Y' 
        ELSE 'N' 
       END) 
    WHERE id <= 8; 

편집 : 당신은 또한 join를 사용하여이 쿼리를 표현할 수

:

UPDATE posts p join 
     (select title, count(*) as cnt 
     from posts p 
     group by title 
     ) pt 
     on p.title = pt.title 
    set p.test = (case when cnt > 1 then 'Y' else 'N' end) 
    where id <= 8 
+0

감사합니다. 그것은 작동하고 지금 나는 문제를 이해했습니다! –

+2

Gordon 경이 당신에게 올바른 답을 주었다면 답을 확인하기 위해 유의하십시오. – Charlesliam

-4

을 하위 쿼리 사용 그룹에서 카운트 기능을 사용하는 경우

+2

그들은 이미 GROUP BY를 사용하고 있습니다. 실제로는 도움이되지 않습니다. 특정 상황에서 필요한 것은 모두 주요 성명서 (UPDATE)와의 상관 관계뿐입니다. –

관련 문제