PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como descartar uma chave de junção ao unir duas tabelas


Postgres não dar-lhe um erro para nomes de coluna de saída duplicados, mas alguns clientes fazem. (Nomes duplicados também não são muito úteis.)

De qualquer forma, use o USING cláusula como condição de junção para dobrar as duas colunas de junção em uma:
SELECT *
FROM  tbl_a  a
LEFT  JOIN tbl_b b USING (id);

Enquanto você se junta à mesma tabela (auto-junção), haverá mais nomes de coluna duplicados. A consulta quase não faria sentido para começar. Isso começa a fazer sentido para diferentes mesas. Como você afirmou em sua pergunta para começar:I have two tables ...

Para evitar todos os nomes de coluna duplicados, você deve listá-los no SELECT cláusula explicitamente - possivelmente lidando com aliases de coluna para obter ambas as instâncias com nomes diferentes.

Ou você pode usar um NATURAL join - se isso se encaixa no seu caso de uso inexplicável:
SELECT *
FROM  tbl_a  a
NATURAL LEFT JOIN tbl_b b;

Isso une todas as colunas que compartilham o mesmo nome e as dobra automaticamente - exatamente o mesmo que listar todos os nomes de colunas comuns em um USING cláusula. Você precisa estar ciente das regras para possíveis valores NULL ...

Detalhes no manual.