You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多条件Left Outer Table Join实现:两表左外连接需求及示例

多条件Left Outer Join实现方案

我来帮你搞定这个基于多条件的左外连接需求!先理清楚两张原始表的情况,再给出对应的SQL语句和预期结果。

原始表数据

First Table

IdRenewalTermEffectiveDtRenewalDt
400001-18/1/20128/1/2013
40000108/1/20138/1/2014
40000118/1/20148/1/2015
40000128/1/20158/1/2016
40000138/1/20168/1/2017
40000148/1/20178/1/2018

SecondTable

IdRenewalTermMaxSizeAYDateTimeEffectiveDtRenewalDt
400001-1220132/25/20138/1/20128/1/2013
400001-11.7520132/25/20138/1/20128/1/2013
40000121.7520165/1/20168/1/20158/1/2016

左外连接SQL语句

我们需要基于Id、RenewalTerm、EffectiveDt和RenewalDt这四个字段做匹配,执行左外连接来保留FirstTable的所有行,同时关联SecondTable中符合条件的数据:

SELECT 
    ft.Id,
    ft.RenewalTerm,
    ft.EffectiveDt,
    ft.RenewalDt,
    st.MaxSize,
    st.AY,
    st.DateTime
FROM FirstTable ft
LEFT OUTER JOIN SecondTable st
    ON ft.Id = st.Id
    AND ft.RenewalTerm = st.RenewalTerm
    AND ft.EffectiveDt = st.EffectiveDt
    AND ft.RenewalDt = st.RenewalDt;

预期连接结果(Expected Table Result)

执行上面的SQL后,会得到如下结果:

IdRenewalTermEffectiveDtRenewalDtMaxSizeAYDateTime
400001-18/1/20128/1/2013220132/25/2013
400001-18/1/20128/1/20131.7520132/25/2013
40000108/1/20138/1/2014NULLNULLNULL
40000118/1/20148/1/2015NULLNULLNULL
40000128/1/20158/1/20161.7520165/1/2016
40000138/1/20168/1/2017NULLNULLNULL
40000148/1/20178/1/2018NULLNULLNULL

这里要注意:FirstTable中RenewalTerm=-1的行在SecondTable中有两条匹配数据,所以会生成两行结果;RenewalTerm=2的行有一条匹配;其余没有匹配的行,SecondTable对应的字段会显示NULL,这正是左外连接的核心特性——完整保留左表的所有记录。

内容的提问来源于stack exchange,提问作者Jatin Garg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:59:30