这是一个例子
SELECT
(time + (SELECT vector FROM vectors WHERE type=1)) AS modified_time
FROM times;
我想从向量类型为1的
vector
表中添加time
到vectors
。有时有一个类型设置为1的向量(总是只有一个,这就是为什么我没有在查询中使用
LIMIT
),但有时没有一个类型设置为1的向量。在第二种情况下,上面查询中的子查询将返回null,因此
time + null
将是null
。因此,如果子查询返回
null
,我需要进行回退,如下所示:... (time + ((SELECT vector FROM vectors WHERE type=1) OR 0)) AS modified_time
我怎么能做到?
最佳答案
如果您知道只有一行,那么让我们使用max()
来保证它。. . 然后您可以使用coalesce()
:
SELECT (time + (SELECT COALESCE(MAX(vector), 0) FROM vectors WHERE type = 1)) AS modified_time
FROM times;
还有其他的方法,但是如果您将子查询留在
SELECT
子句中,我发现这是最简单的方法。