簡體   English   中英

如何在mysql中給子查詢默認值?

[英]how to give default value to subquery in mysql?

在查詢中,我可以給子查詢一些默認值嗎?

我的子查詢之一可能沒有任何值。在這種情況下,它返回null作為整個結果。 即使子查詢之一為null,也可以分配一些默認值嗎?

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

檢查nvl函數,它應該可以解決您的問題。

使用情況/如果:

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

如下所示在您的select子句中使用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。如果您未使用*選擇所有記錄,則此功能有效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM