我有以下表格:
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存在于第二个表中,则返回第二个表的名称而不是第一个表的名称,下面是我想要的结果:
| 身份证|诺姆|
| - ------|- ------|
| 1个|泰斯特泰斯特|
| 第二章|测试1|
| 三个|测试2测试2|
| 四个|测试3|
| 五个|测试4测试4|
我是这样想的:
SELECT usuarios.id, usuarios.nome
FROM usuarios
UNION
SELECT FichaColab.Id, nomcompleto
FROM FichaColab
但这种方法返回两个表中的所有内容,并重复id,但不能。
2条答案
按热度按时间u5rb5r591#
您可以在两个表之间使用
LEFT JOIN
,然后在名称上使用COALESCE
,并优先使用全名。检查here演示。
h43kikqp2#
这应该可以完成任务:
Demo