Sql server SQL:如果表B为空,则将表A中的值与表C连接起来

Sql server SQL:如果表B为空,则将表A中的值与表C连接起来,sql-server,join,Sql Server,Join,我有三个表,希望在表A和表B匹配时连接它们(内部连接),但是,如果A中的ID不匹配,我希望将其与表C匹配。像这样: 表Aperson id person 1 John 2 Adam 3 Carolin 表Bpet owner_id pet 1 Bubbles 3 Fido 表C车辆 owner_id vehicle 2 Mustang 3 Golf 我期望的结果是 person pet/vehic

我有三个表,希望在表A和表B匹配时连接它们(内部连接),但是,如果A中的ID不匹配,我希望将其与表C匹配。像这样:

表A
person

id   person
1    John
2    Adam
3    Carolin
表B
pet

owner_id  pet
1         Bubbles
3         Fido
表C
车辆

owner_id  vehicle
2         Mustang
3         Golf
我期望的结果是

person   pet/vehicle
1        Bubbles
2        Mustang
3        Fido
对于人员3,选择宠物而不是车辆,因为宠物不是空的

我当然可以这样做:

select a.person,b.pet,c.vehicle from person a
join pet b on a.id = b.owner_id
join vehicle c on a.id = c.owner_id

但是这会给我三列,我需要两列。

你可以使用
左连接
合并

select a.person, coalesce(b.pet, c.vehicle) as 'pet/vehicle'
from person a
left join pet b on a.id = b.owner_id
left join vehicle c on a.id = c.owner_id

这看起来很有趣-我马上就来试试