这是一个例子
SELECT
(time + (SELECT vector FROM vectors WHERE type=1)) AS modified_time
FROM times;
我想从vector
表中向time
添加vectors
,其中向量的类型为1。
有时候有一个类型设置为1的向量(总是只有一个,这就是我在查询中没有使用LIMIT
的原因),但有时候没有一个类型设置为1的向量。
在第二种情况下,上述查询中的子查询将返回null,因此time + null
将为null
。
所以我需要做一个后备,以防子查询返回null
,例如:
... (time + ((SELECT vector FROM vectors WHERE type=1) OR 0)) AS modified_time
我该怎么做?
答案 0 :(得分:1)
如果您知道只有一行,请使用max()
保证。 。 。然后你可以使用coalesce()
:
SELECT (time + (SELECT COALESCE(MAX(vector), 0) FROM vectors WHERE type = 1)) AS modified_time
FROM times;
还有其他方法,但如果将子查询保留在SELECT
子句中,我发现这是最简单的方法。
答案 1 :(得分:1)
尝试使用COALESCE
SELECT
(time + COALESCE((SELECT vector FROM vectors WHERE type=1),0)) AS modified_time
FROM times;
答案 2 :(得分:1)
我认为你想要这样做:
SELECT
(time + ISNULL(SELECT vector FROM vectors WHERE type=1),0 OR Other Subquery) AS modified_time
FROM times;
所以如果有一个以上的Aplly SUM来载:
SELECT
(time + ISNULL(SELECT SUM(vector) FROM vectors WHERE type=1),0 OR Other Subquery) AS modified_time
FROM times;