postgresql – 我可以为左外连接提供默认值吗?
发布时间:2020-12-13 16:20:04 所属栏目:百科 来源:网络整理
导读:假设我有表a(列a1)和b(列b1和b2),我执行左外连接 SELECT *FROM a LEFT OUTER JOIN bON a.a1 = b.b1 然后b1和b2将为NULL,其中a1的值没有匹配的b1值. 我可以为b2提供默认值,而不是NULL吗?请注意,COALESCE在这里不起作用,因为我不希望默认值覆盖b2中的潜在NULL
假设我有表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在这里不起作用,因为我不希望默认值覆盖b2中的潜在NULL,其中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来“手动”完成.这是一般的最佳选择,还是有更标准和更简洁的方式? SELECT a.a1,b.b1,CASE WHEN b.b1 is NULL THEN 5 ELSE b.b2 END AS b2 FROM a LEFT OUTER JOIN b ON a.a1 = b.b1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |