Postgres zou niet geven u een foutmelding voor dubbele uitvoerkolomnamen, maar sommige clients doen dat wel. (Dubbele namen zijn ook niet erg handig.)
Gebruik in ieder geval de USING
clausule als join-voorwaarde om de twee join-kolommen in één te vouwen:
SELECT *
FROM tbl_a a
LEFT JOIN tbl_b b USING (id);
Terwijl u lid wordt van dezelfde tabel (self-join), zullen er meer dubbele kolomnamen zijn. De vraag zou in het begin nauwelijks zin hebben. Dit begint logisch te worden voor verschillende tafels. Zoals je in je vraag al zei om mee te beginnen:I have two tables ...
Om alle dubbele kolomnamen te vermijden, moet u ze vermelden in de SELECT
clausule expliciet - mogelijk het uitdelen van kolomaliassen om beide instanties met verschillende namen te krijgen.
Of je kunt een NATURAL
. gebruiken join - als dat past bij uw onverklaarbare use case:
SELECT *
FROM tbl_a a
NATURAL LEFT JOIN tbl_b b;
Dit voegt zich bij alle kolommen die dezelfde naam hebben en vouwt deze automatisch - precies hetzelfde als het weergeven van alle veelvoorkomende kolomnamen in een USING
clausule. U moet op de hoogte zijn van regels voor mogelijke NULL-waarden ...