2013-05-01 3 views
5

count가 0보다 큰지 아닌지를 나타내는 select 문에서 true/false 값을 얻으려고합니다. MySQL SELECT COUNT> 0 (부울 값)

나는이 문서 읽기 : http://dev.mysql.com/doc/refman/5.1/en/expressions.html

내가 완전히 이해하지 않습니다하지만 그들은 내 표현에 '>>'사용할 수 있습니다 나타내는 것 같았다.

그래서 나는이 시도 :

SELECT COUNT(*)>>0 AS my_bool FROM table GROUP BY id; 

그것은 실행하고 오류 또는 경고를 생성 나던을, 그러나 my_bool 열은 단지 COUNT(*)의 결과가 포함되어 있습니다. 내가 할 수있는 일이 가능합니까? 그렇다면 어떻게해야합니까?

추신 : 그렇습니다. 결과를 처리하는 코드에서 x> y를 테스트 할 수 있다는 것을 알고 있습니다. MySQL 단독으로 처리 할 수 ​​있는지 알고 싶습니다. 이유가 무엇인지 설명해주십시오. 모든 수단)

답변

16

예제에서 greater than 연산자를 사용하지 않고 bit shift (>>)을 사용하고 있습니다. 사용하는 경우

SELECT COUNT(*) > 0 AS my_bool FROM table GROUP BY id; 

my_bool은 부울 값으로 0 또는 1을 포함합니다.

+0

doh! 옙 이제는 얼굴을 마시고있어. 나는 그것을 시도하고 기억하지 않는다. 그래서 나는 그것을 먼저 시도하지 않았다 : S는 그렇게 할 때 받아 들일 것이다 :) thanks – jammypeach

1

는 다음을 시도해보십시오

SELECT (COUNT(*) <> 0) AS my_bool 
FROM table 
GROUP BY id; 
4

확인하고 참/거짓을 반환 할 경우 조건을 사용합니다.

예 : 카운트 값이 0보다 큰 다음 true를 돌려 확인됩니다

SELECT if(COUNT(*)>0,'true','false') AS my_bool FROM table GROUP BY id; 

다른 false를 돌려줍니다. 나는 유전자의 대답은 더 나은 하나라고 생각하지만

+0

나는이 대답을 가장 좋아한다. – newUserNameHere

+0

@newUserName 감사합니다. –

1

, 당신은 또한이 작업을 수행하는 하위 쿼리를 사용할 수 있습니다 COUNT(*)가 제로

SELECT (
    SELECT COUNT(*) AS my_bool FROM table GROUP BY id 
) != 0; 

경우 쿼리는 1

1

당신은 수, 그렇지 않으면 0 반환 do-

SET @countValue = (SELECT COUNT(*) FROM table GROUP BY id); 
if @countValue > 0 
    return 1; 
else 
    return 0;