sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo soltar una clave de unión al unir dos tablas

Postgres no le da un error por nombres de columna de salida duplicados, pero algunos clientes lo hacen. (Los nombres duplicados tampoco son muy útiles).

De cualquier manera, use el USING cláusula como condición de unión para plegar las dos columnas de unión en una sola:

SELECT *
FROM  tbl_a  a
LEFT  JOIN tbl_b b USING (id);

Mientras se une a la misma tabla (auto-unión), habrá más nombres de columna duplicados. Para empezar, la consulta apenas tendría sentido. Esto empieza a tener sentido para diferentes mesas. Como dijiste en tu pregunta para empezar:I have two tables ...

Para evitar todos los nombres de columna duplicados, debe enumerarlos en SELECT cláusula explícitamente, posiblemente repartiendo alias de columna para obtener ambas instancias con nombres diferentes.

O puedes usar un NATURAL unirse - si eso se ajusta a su caso de uso inexplicable:

SELECT *
FROM  tbl_a  a
NATURAL LEFT JOIN tbl_b b;

Esto une todas las columnas que comparten el mismo nombre y las pliega automáticamente, exactamente lo mismo que enumerar todos los nombres de columnas comunes en un USING cláusula. Debe conocer las reglas para posibles valores NULL...

Detalles en el manual.