2010-12-07 4 views
1

count (*)가 NULL이면 쿼리를 수정하여 0을 반환 할 수 있습니까?count (*)가 NULL 인 경우 0을 반환합니다.

select monthname(timestamp), year(timestamp), count(*) 
from largehits 
where largeID = someid 
    and (month(timestamp)<=somemonth 
    and month(timestamp)>=somemonth 
    and year(timestamp)<=someyear 
    and year(timestamp)>=someyear) 
group by month(timestamp), year(timestamp) 
order by timestamp asc 

고마워요!

+6

'COUNT()'는 절대로 NULL을 반환 할 수 없습니다. – BoltClock

+0

다른 의미입니까? COUNT()가 0을 반환하면 NULL을 반환합니까? 간단한 사례가 당신을 위해 그것을 할 것입니다. 그 이유는 무엇인지 모르겠다. – manneorama

+1

나는 당신이 맞을 가능성이 더 높다고 생각하는 것은 달/년 콤보가 존재하지 않아 누락 된 행을 얻는다는 것인가? – Basic

답변

2

BoltClock은 COUNT이 결코 NULL 일 수 없다는 의견에 좋은 점을 만듭니다.

일반적으로이 유형의 문제에는 COALESCE(expression,0)을 사용합니다.

편집 : 의견에 설명 된 바에 따라 outer join을 숫자 표에 사용해야 원하는 효과를 얻을 수 있습니다.

+0

외부 결합에 대해 자세히 설명 할 수 있습니까? –

+0

예. 기본적으로 [이 질문] (http://stackoverflow.com/questions/3538858/mysql-how-to-fill-missing-dates-in-range/3538926#3538926)과 같은 문제입니다. –

관련 문제