2014-06-12 5 views
0

내 쿼리에서 하위 쿼리에 일부 기본값을 부여 할 수 있습니까?mysql에서 하위 쿼리에 기본값을 지정하는 방법은 무엇입니까?

내 하위 쿼리 중 하나에 값이 없을 수 있습니다.이 경우 전체 결과로 null이 반환됩니다. 하위 쿼리 중 하나라도 null 인 경우 일부 기본값을 할당 할 수 있습니까?

select 
    t1 . *, t2.speed, t3.Accelerometerx 
from 
    (SELECT 
     * 
    FROM 
     `table1` 
    ) as t1, 
    (SELECT 
     * 
    FROM 
     table1) 
    as t2 
+1

을 사용하여 모든 레코드를 선택하지 않으면 작동합니다. COALESCE()를 참조하십시오. – Strawberry

+0

[MySql Query가 빈 문자열로 NULL을 바꾸기]가 중복 될 수 있습니다. (http://stackoverflow.com/questions/9560723/mysql-query-replace-null-withempty-string-in-select) – Jenn

답변

0

nvl 기능을 확인하면 문제가 해결됩니다.

+0

시도했습니다. ifnull ..하지만 didnt 일 : t1을 선택하십시오. *, t2.speed, ifnull (t3.Accelerometerx, "") ..... – user2595243

+0

그것이 작동하지 않는다는 것이 무엇을 의미합니까? 오류를 반환하거나 얻고 자하는 결과를 제공하지 않습니다. – user3722371

+0

아무 값도 반환하지 않습니다. – user2595243

0

사용 CASE/IF :

CASE case_value 
    WHEN when_value THEN statement_list 
    [WHEN when_value THEN statement_list] ... 
    [ELSE statement_list] 
END CASE 

예, 대신 :

where 
    `vehicle_tripdetails`.`Param_ID` = '131' 
     and trip_id = 127) as t1, 
(SELECT 
    time_stamp, `vehicle_tripdetails`.`Param_Data` as speed 
FROM 
    `vehicle_tripdetails` 
where 
    `vehicle_tripdetails`.`Param_ID` = '13' 
     and trip_id = 127) as t2, 

당신은 사용할 수 있습니다

where 
    `vehicle_tripdetails`.`Param_ID` = '131' 
     and trip_id = 127) as t1, 
CASE 
    WHEN (SELECT time_stamp, `vehicle_tripdetails`.`Param_Data` as speed FROM 
    `vehicle_tripdetails` where 
    `vehicle_tripdetails`.`Param_ID` = '13' 
     and trip_id = 127) 
    IS NOT NULL 
THEN (SELECT time_stamp, `vehicle_tripdetails`.`Param_Data` as speed FROM 
    `vehicle_tripdetails` where 
    `vehicle_tripdetails`.`Param_ID` = '13' 
     and trip_id = 127) 
ELSE 
    'default value' 
END CASE 
AS t2 
0

사용 ISNULL 당신의 선택 절에서 다음과 같이

select t1.*, 
      CASE ISNULL(t2.speed) WHEN 1 THEN 0 ELSE t2.speed END, 
      CASE ISNULL(t3.xyz) WHEN 1 THEN 0 ELSE t3.xyz END 

기본값은 0입니다. *

관련 문제