sql左连接澄清
我有两张桌子 我需要表A中的所有记录,表B中有匹配项的除外,然后取表B的匹配值 因此,如果表A与表B匹配,那么我需要从结果中排除该值(即从表A中获取所有记录,并用表B中的匹配值替换表A中的记录) 据我所知,我在匹配列上左键连接了两个表,然后添加了where子句以排除空值,但我不确定这是否正确 数据: 这是我得到的最接近的结果,但我不确定它是否正确:sql左连接澄清,sql,Sql,我有两张桌子 我需要表A中的所有记录,表B中有匹配项的除外,然后取表B的匹配值 因此,如果表A与表B匹配,那么我需要从结果中排除该值(即从表A中获取所有记录,并用表B中的匹配值替换表A中的记录) 据我所知,我在匹配列上左键连接了两个表,然后添加了where子句以排除空值,但我不确定这是否正确 数据: 这是我得到的最接近的结果,但我不确定它是否正确: select * from tableA tblA left join tableB tblB on tblA.matchingColumn = t
select * from tableA tblA
left join tableB tblB
on tblA.matchingColumn = tblB.matchingColumn
where tblB.matchingColumn is null
这将返回
表A
中的所有行。如果表B
中有任何匹配值,则将其用作值
SELECT TBLA.ID
, COALESCE(TBLB.VALUE, TBLA.VALUE) VALUE
FROM TABLEA TBLA
LEFT JOIN TABLEB TBLB
ON TBLA.ID = TBLB.ID;
更新-对于此线程这将返回
表A
中的所有行。如果表B
中有任何匹配值,则将其用作值
SELECT TBLA.ID
, COALESCE(TBLB.VALUE, TBLA.VALUE) VALUE
FROM TABLEA TBLA
LEFT JOIN TABLEB TBLB
ON TBLA.ID = TBLB.ID;
更新-对于此线程执行从表a到表b的左联接,并根据表b中的匹配情况使用a或b中的值
select tablea.id, case when tableb.id is null then tablea.value else tableb.value end value
from tablea
left join tableb on tablea.id=tableb.id
执行从表a到表b的左联接,并根据表b中的匹配情况使用a或b中的值
select tablea.id, case when tableb.id is null then tablea.value else tableb.value end value
from tablea
left join tableb on tablea.id=tableb.id
您的查询看起来是正确的。您的查询看起来是正确的。我尝试了您的查询,我相信我的数据可能有点不正确。我更新了表格和预期结果,你介意再看一眼吗?我尝试了你的查询,我相信我的数据可能有点不正确。我更新了表格和预期结果,你介意再看一看吗?