2012-09-20 3 views
0

여러 쿼리를 통합하는 데 유니온 all을 사용하고 있지만 유니온 모두가 0 값을위한 빈 행을 삽입하지 않습니다. 나는 사이트의 모양을 가져다가이 질문에 따라, 그것은을 포함해야한다 :SQL 유니온이 모두 0 값을 포함하지 않음

mysql union with NULL fields

이 내 쿼리입니다 :

select [SMTH] from [H].[D].[T] 
where Date = (SELECT MAX(DATE) from [H].[D].[T] where Data = 1 and SMTH > 0) 
union all 
select [SMTH] from [H].[D].[T] 
where Date = (SELECT MAX(DATE) from [H].[D].[T] where Data = 2 and SMTH > 0) 
union all 
select [SMTH] from [H].[D].[T] 
where Date = (SELECT MAX(DATE) from [H].[D].[T] where Data = 3 and SMTH > 0) 
union all 
select [SMTH] from [H].[D].[T] 
where Date = (SELECT MAX(DATE) from [H].[D].[T] where Data = 4 and SMTH > 0) 

결과 :

10068 
3967 
895 

개의 독립적 검색어 :

select [SMTH] from [H].[D].[T] 
where Date = (SELECT MAX(DATE) from [H].[D].[T] where Data = 1 and SMTH > 0) 

select [SMTH] from [H].[D].[T] 
where Date = (SELECT MAX(DATE) from [H].[D].[T] where Data = 2 and SMTH > 0) 

select [SMTH] from [H].[D].[T] 
where Date = (SELECT MAX(DATE) from [H].[D].[T] where Data = 3 and SMTH > 0) 

select [SMTH] from [H].[D].[T] 
where Date = (SELECT MAX(DATE) from [H].[D].[T] where Data = 4 and SMTH > 0) 

결과 :

그러니까 기본적으로 나는 앞의 질문에서 대답이 옳다고 생각하기 때문에
10068 
3967 
0 
895 

, 내가 무슨 일을하고 있는가?

감사합니다.

+1

당신이 MySQL은 있는지 위치 : 테이블 (이 쿼리 ID) 기본 키가있는 경우

: 어떤 방법이 쿼리는 union보다 더 깨끗? 식별자에'[] '를 사용하는 것은 Sql Server의 전형입니다. –

+0

이것은 SQL이지만 이전에 대답 한 질문은 MySQL – Eduardo

+0

입니다. 1. '날짜'값이 테이블 내에서 고유합니까? 2. 네 가지 독립적 인 쿼리에 대한 결과를 어디에서 어떻게 정확히 얻었습니까? 세 번째 쿼리가 실제로 행을 만들지 않았고 결과를 반환 한 응용 프로그램이 기본값으로 '0'을 표시하는 것일 수 있습니까? –

답변

2

어떤 열이 null입니까? where 절로 인해 null이 제거되지 않았습니까? null을 사용하는 연산은 항상 null이됩니다 (IS NULL을 사용한 테스트 제외).

+0

나는 칼럼을 바꿨다. 나는 바보스럽게 물었다. 고맙습니다. – Eduardo

0

세 번째 쿼리는 0을 반환합니다. 왜 이것이 null이라고 생각합니까?

select SMTH, Data, [date] 
from 
    H.D.T 
    inner join (
     select id, Data, max([date]) as [date] 
     from H.D.T 
     where Data in (1, 2, 3, 4) and SMTH > 0 
     group by id, Data 
    ) s on s.id = H.D.T.id 
order by Data 
+0

네, 단어 null로 0 값을 표현하는 실수. 나는 그 문제를 해결했다. "여러 쿼리를 통합하는 데 모두 공용체를 사용하고 있지만 공용은 모두 0 값에 대해 빈 행을 삽입하지 않습니다" – Eduardo

+1

쿼리가 작동하지 않습니다 : 열 "HDTdata"가 포함되어 있지 않으므로 ORDER BY HDTSMTH 절에 올바르지 않습니다. 집계 함수 또는 GROUP BY 절에서 – Eduardo

+0

@Eduardo Corrected –