从一个表中提取名称,除非另一个表中存在行

Gui*_*ngo 2 sql sql-server sql-server-2008

我有以下查询:

SELECT a.id, a.Nome, ...
FROM cadClientes as a 
...
join Contatos_Clientes as f on a.id = f.idCliente 
Run Code Online (Sandbox Code Playgroud)

问题是有时候没有一排Contatos_Clientes.

我想返回NomeContatos_Clientes如果它存在,否则返回Nome距离cadClientes.

Aar*_*and 6

如果只想在一个表中不存在值时显示它们,则应将连接更改为LEFT OUTER JOIN.例:

SELECT Nome = COALESCE(c.Nome, cc.Nome) -- ,... Other columns
FROM dbo.cadClientes AS c
-- other joins...
LEFT OUTER JOIN dbo.Contatos_Clientes AS cc
ON c.id = cc.idCliente;
Run Code Online (Sandbox Code Playgroud)

在创建/引用对象时请始终使用模式前缀,并尝试使用有意义的别名而不是a,b,c ......