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...