微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgresql – 我可以为左外连接提供默认值吗?

假设我有表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

原文地址:https://www.jb51.cc/postgresql/192234.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐