2016-09-02 1 views
-1

나는이MySQL은 : 결과의 한 행이 특정 값

SELECT color, form FROM userTable WHERE type = 42 

같은 선택 문을 사용하고

color | form | 
-------------------- 
red | circle | 
blue | rectangle | 
blue | circle | 

그러나 내가하고 싶은 결과로 얻을하고있는 경우 확인 내 결과 행에 파란색이 표시되면 인 1 행만 가져옵니다. 그렇지 않으면 0이고 열 f에 1입니다. orm 내 결과 행 형식이 선 형식 인 경우 따라서 위의 예에서 결과가

color | form | 
------------------- 
    1 |  0 | 

과 같아야 그것은 MySQL의 명령으로 이것을 달성 할 수 있습니까? 여기

내가 뭘하려 :

SELECT IF(color='blue', 1, 0) as color, IF(form='line', 1, 0) as form 
FROM userTable WHERE type = 27 GROUP BY type 

하지만 행 중 일부는 IF-조건을 충족하고 다른 사람이하지 않기 때문에이 작품 생각하지 않습니다. IF THERE EXITS A ROW WITH COLOR = 'blue' 또는 뭔가 같은 진술이 필요합니다.

답변

3

당신은 이런 식으로 할 필요가 :

SELECT IF(COUNT(CASE WHEN color = 'blue' THEN 1 END) > 0, 1, 0) AS color, 
     IF(COUNT(CASE WHEN color = 'line' THEN 1 END) > 0, 1, 0) AS form 
FROM mytable 
WHERE type = 42 
GROUP BY type 

Demo here

+0

Perfect! 고맙습니다 :)! – Adam

1

당신은 기능 COUNT()와 '행이 존재하는 경우'상황을 확인할 수 있습니다.

SELECT COUNT(color) FROM userTable WHERE color="blue" 예를 들어, 단일 열과 행을 반환하면이 개수가됩니다.

조건과 더 많은 열을 사용하여이를 확장하여 용도에 맞게 만들 수 있습니다.

관련 문제