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'
我有两个表,我想根据两个参数加入。两个表中的第一个参数(名称)需要相同。当 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'