已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。
31分钟前关门了。
截至28分钟前,机构群体正在审核是否重新讨论此问题。
Improve this question
- 连接2个表(订单、地址)
- 订单包含delivery_address_id(包含NULL值)和invoice_address_id(不包含NULL值)列
- 地址包含ID列(不包含NULL值)
LEFT JOIN主要必须在orders.delivery_address_id上执行。但是,如果该行中的值为NULL,请在orders.invoice_address_id上执行LEFT JOIN。
我该怎么处理这件事?
我尝试了运算符OR
,但结果不正确。我还考虑了CASE WHEN语句。我的期望是让LEFT JOIN工作。
2条答案
按热度按时间dz6r00yl1#
您可以在
ON
子句中使用运算子OR
:或者,使用
COALESCE()
:d4so4syb2#
所以,你想在
delivery_address_id
上加入,但有时它是NULL
,所以你需要invoice_address_id
作为后备。这些情况是COALESCE函数真正发挥作用的地方。如果不是
NULL
,COALESCE(delivery_address_id, invoice_address_id)
将解析为交货地址ID,否则将解析为发票地址ID。这样我们就可以实现您想要的联接: