不要返回重复的 ID,并优先考虑第二个表

  • 本文关键字:第二个 返回 ID mysql
  • 更新时间 :
  • 英文 :


我有以下表格:

CREATE TABLE usuarios ( id INT, nome varchar );
INSERT INTO usuarios VALUES
(1, 'Teste'),
(2, 'Teste1'),
(3, 'Teste2'),
(4, 'Teste3'),
(5, 'Teste4'),
CREATE TABLE FichaColab( id INT, nomcompleto varchar );
INSERT INTO FichaColab VALUES
(1, 'Teste Teste'),
(3, 'Teste2 Teste2'),
(5, 'Teste4 Teste4'),

我打算从第一个表中获取所有名称,但是如果id存在于第二个表中,则返回第二个表的名称而不是第一个表的名称。下面是我想要的结果:

<表类>id省tbody><<tr>1证人证人2Teste13Teste2 Teste24Teste35Teste4 Teste4

您可以在两个表之间使用LEFT JOIN,然后在名称上使用COALESCE,通过对全名赋予优先级。

SELECT u.id, COALESCE(fc.nomcompleto, u.nome) AS nome
FROM      usuarios   u
LEFT JOIN FichaColab fc ON u.id = fc.id

点击这里查看演示。

这应该可以完成工作:

select * from (
select FichaColab.* from FichaColab left join  usuarios on usuarios.id = FichaColab.id --everithing in table FichaColab 
union 
select usuarios.* from FichaColab right join usuarios on usuarios.id = FichaColab.id where FichaColab.id is null --everithing from usuarios where no record in FichaColab exists
) as unsorted
order by ID --sort it

演示

最新更新