假设我有表a(带有a1列)和b(带有b1和b2列),并且我执行了左外部联接
SELECT *
FROM a LEFT OUTER JOIN b
ON a.a1 = b.b1
然后,b1和b2将为NULL,其中a1的值不匹配b1的值。
我可以为b2提供默认值,而不是NULL吗?需要注意的是COALESCE不会在这里工作,因为我不希望默认值来覆盖潜在的NULL在B2那里是 B1匹配A1的值。
也就是说,a和b为
CREATE TABLE a (a1)
AS VALUES (1),
(2),
(3) ;
CREATE TABLE b (b1,b2)
AS VALUES (1, 10),
(3, null) ;
a1 b1 | b2
--- --------
1 1 | 10
2 3 | NULL
3
我想得到b2的默认值100
a1 | b1 | b2
---------------
1 | 1 | 10
2 | NULL | 100
3 | 3 | NULL
在这种简单的情况下,我可以通过查看输出中b1是否为NULL来“手工”完成。这是总体上最好的选择,还是有更标准,更整洁的方式?
sql
(这表示“ SQL查询语言”。该标记不表示任何特定的DBMS产品或方言)。该部分:[b2]=CASE WHEN ... END
是无效的(标准)SQL表达式。