Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql左连接澄清_Sql - Fatal编程技术网

sql左连接澄清

sql左连接澄清,sql,Sql,我有两张桌子 我需要表A中的所有记录,表B中有匹配项的除外,然后取表B的匹配值 因此,如果表A与表B匹配,那么我需要从结果中排除该值(即从表A中获取所有记录,并用表B中的匹配值替换表A中的记录) 据我所知,我在匹配列上左键连接了两个表,然后添加了where子句以排除空值,但我不确定这是否正确 数据: 这是我得到的最接近的结果,但我不确定它是否正确: select * from tableA tblA left join tableB tblB on tblA.matchingColumn = t

我有两张桌子

我需要表A中的所有记录,表B中有匹配项的除外,然后取表B的匹配值

因此,如果表A与表B匹配,那么我需要从结果中排除该值(即从表A中获取所有记录,并用表B中的匹配值替换表A中的记录)

据我所知,我在匹配列上左键连接了两个表,然后添加了where子句以排除空值,但我不确定这是否正确

数据:

这是我得到的最接近的结果,但我不确定它是否正确:

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

您的查询看起来是正确的。您的查询看起来是正确的。我尝试了您的查询,我相信我的数据可能有点不正确。我更新了表格和预期结果,你介意再看一眼吗?我尝试了你的查询,我相信我的数据可能有点不正确。我更新了表格和预期结果,你介意再看一看吗?