SQL 加入条件 - 不是现有值

SQL Join condition - not existing values

我有两个表,我想根据两个参数加入。两个表中的第一个参数(名称)需要相同。当 Table B 中的名称存在第二个参数(属性)时,我也希望属性也匹配。如果 Table A 中的属性在 Table B 中不存在,我想加入 Table B 中的固定值,在本例中为黑色。

Example

我这样试过:

LEFT OUTER JOIN on TableA.name = TableB.name and TableB.attribute = CASE WHEN NOT EXISTS(
     SELECT TableB2.attribute FROM TableB TableB2 WHERE TableB2.attribute = TableA.attribute) 
THEN 'black' ELSE TableA.attribute END

这行得通,但速度很慢,我相信有更好的解决方案,因为我是 SQL 的新手。

提前致谢:)

这种类型的违约通常使用两个 left join 来处理:

select . . .,
       colaesce(b.value, bdef.value) as value
from tableA a left join
     tableB b
     on b.attribute = a.attribute left join
     tableB bdef
     on bdef.attribute = 'black'