SQL Left Left Join join return 0이 아닌 반환 0
문제
각 유형의 레코드 수를 계산하여 두 테이블에 가입하고 싶습니다. 왼쪽 테이블에 해당 유형의 레코드가 없으면 널이 아닌 0을 반환하기를 원합니다.
어떻게 할 수 있습니까?
해결책
사용:
ISNULL(count(*), 0)
다른 팁
정확한 문제를 이해했는지 확실하지 않지만 왼쪽 조인의 SQLServer에서 쿼리가 다음과 같은 경우 0으로 계산됩니다.
select t1.id, count(t2.id)
from table1 t1
left outer join table2 t2
on t1.id = t2.id
group by t1.id
ISNULL(nullable, value_if_null)
MSSQL의 경우 COALESCE(nullable1, nullable2, ..., value_if_null)
MySQL을 위해.
편집하다:내가 말했듯이 COALESCE
둘 다를 위해 작동하므로 교체하기로 선택했습니다. NULL
열.
이제 나는 그렇게 생각합니다 COUNT()
잉 NULL
값은 반환됩니다 0
MySQL에서도 Rashmi에 동의합니다. 쿼리와 원하는 결과를 보여 주시겠습니까?
"케이스"를 사용할 수 있습니다.
SELECT T1.NAME, CASE WHEN T2.DATA IS NULL THEN 0 ELSE T2.DATA END
FROM T1 LEFT JOIN T2 ON T1.ID = T2.ID
Coalesce는 ISNULL 또는 NVL보다 교차 호환성입니다 (MSSQL, Oracle, MySQL, Derby 등에서 작동 함). 그러나 성능 차이에 대해서는 확실하지 않습니다.
COALESCE(XXX, 0)
예를 들어
SELECT branch1_id, branch1_name, COALESCE(devnum, 0) FROM
branch1 as S LEFT JOIN view_inner_zj_devnum as B ON S.branch1_id = B.bid1 GROUP BY branch1_id;
그것은 나를 위해 작동합니다.
제휴하지 않습니다 StackOverflow