2012-08-30 3 views
8

WHERE 절의 조건으로 데이터를 검색하려고합니다.
여기 내 테이블 뭔가 모습입니다 :중첩 된 다중 조건이있는 WHERE 절

Name Location Age 
---------------------- 
AAA  Bhuj  24 
BBB  Mumbai  22 
CCC  Bhuj  18 
DDD  Bhuj  27 
EEE  Mumbai  26 

WHERE 절에 내 조건은 다음과 같습니다

SELECT * FROM testing 
WHERE 
CASE Location WHEN 'Bhuj' THEN Age>20 
       WHEN 'Mumbai' THEN Age>25 
END; 

이 코드가 작동 :
if location = 'Bhuj' then Age>20 else if location = 'Mumbai' then Age>25

내가 이것을 달성하기 위해이 코드를 시도하고있다 MySQL (see this SQLFiddle)에서는 문제가 없지만 SQL Server (see this SQLFiddle)에서는 작동하지 않으며 다음 오류가 발생합니다. 또는 :

Incorrect syntax near '>'.: SELECT * FROM testing WHERE case Location When 'Bhuj' then Age>20 When 'Mumbai' then Age>25 end

제안 사항?

+1

질문을 downvote 이유가 표시되지 않습니다. Upvoted :) – hgulyan

+0

여기에 사례가 필요하지 않습니다. –

+0

@NitinGoyal 제 실제 검색어가 다르고 복잡합니다. 어디에서'CASE' 문을 사용해야합니까. 나는 여기에 그것을 간단하게 보여 주었다. – hims056

답변

6
SELECT * FROM testing 
WHERE 
Age > case Location When 'Bhuj' then 20 
       When 'Mumbai' then 25 
       end 
+0

오. 내게 아주 사소한 실수. 정확히 내가 원했던 것. – hims056

13

나는 이것이 당신이 달성하려고하는지 생각

SELECT * 
    FROM testing 
    WHERE (Location = 'Bhuj' AND Age>20) 
     OR (Location = 'Mumbai' AND Age>25) 

확인 SQLFiddle

UPDATE :

Case 문은 값을 반환, 당신은 내부 조건을 가질 수 없습니다 그것.

+0

예. 그러나 예제에서 보여준'CASE' 문을 사용할 수 있습니까? – hims056

+0

내 업데이트를 확인하십시오. – hgulyan

+0

'WHERE' 절에서'CASE'를 사용할 수 있습니다. podiluska 님이 작성한 다른 답변보기. – hims056