如果存在a2.date
,则我想选择它,但如果它为NULL
,则我想选择a1.date
(a2
是左连接)。 这样写:
SELECT a2.date OR a1.date
...
该方法返回布尔值(如预期所示),但我该怎么获取非空列的实际值呢?(首选a2.date
,但如果为null,则为a1.date
)
COALESCE
是等效的CASE
语句的语法糖,因此在这里提到它有点多余。用类比的方式来说,所有的SQL约束都可以使用SELECT COUNT(*)
(基数)查询来表示,但如果我在每个使用FOREIGN KEY
的答案中指出这一点,可能会让所有人感到疲倦。但是对此进行投票否决可能有点过分。 - onedaywhen请查看COALESCE函数。
它接受可变数量的参数并返回第一个非空值。它与连接一起使用效果很好。
SELECT COALESCE(a2.date, a1.date) ...