2017-06-20 67 views
0

這是一個例子添加VALUE1數值2或0(零),以數值2如果值1 IS NULL

SELECT 
(time + (SELECT vector FROM vectors WHERE type=1)) AS modified_time 
FROM times; 

我想從vectors表添加vectortime其中所述載體的類型是1 有時有是類型設置爲1的一個向量(總是隻有一個,這就是爲什麼我在查詢中不使用LIMIT),但有時沒有一個向量的類型設置爲1。上述查詢中的子查詢將返回空值,因此time + null將爲null

所以我需要一個備用的情況下,子查詢返回null,是這樣的:

... (time + ((SELECT vector FROM vectors WHERE type=1) OR 0)) AS modified_time

我怎麼能作出這樣的?

回答

1

如果您知道只有一行,我們保證使用max()。 。 。那麼你可以使用coalesce()

SELECT (time + (SELECT COALESCE(MAX(vector), 0) FROM vectors WHERE type = 1)) AS modified_time 
FROM times; 

還有其他的方法,但是我覺得這是最簡單的,如果你離開SELECT子句中的子查詢。

1

嘗試使用COALESCE

SELECT 
(time + COALESCE((SELECT vector FROM vectors WHERE type=1),0)) AS modified_time 
FROM times; 
1

我認爲要做到這一點:

SELECT 
(time + ISNULL(SELECT vector FROM vectors WHERE type=1),0 OR Other Subquery) AS modified_time 
FROM times; 

所以如果有一個以上的Aplly共計矢量:

SELECT 
(time + ISNULL(SELECT SUM(vector) FROM vectors WHERE type=1),0 OR Other Subquery) AS modified_time 
FROM times; 
相關問題