Postgres nie wyświetla błąd dla zduplikowanych nazw kolumn wyjściowych, ale niektórzy klienci to robią. (Zduplikowane nazwy też nie są zbyt przydatne).
Tak czy inaczej, użyj USING
klauzula jako warunek złączenia, aby złożyć dwie kolumny złączenia w jedną:
SELECT *
FROM tbl_a a
LEFT JOIN tbl_b b USING (id);
Podczas dołączania do tej samej tabeli (samozłączenie) będzie więcej zduplikowanych nazw kolumn. Zapytanie nie miałoby na początku żadnego sensu. To ma sens w przypadku różnych tabele. Tak jak powiedziałeś w swoim pytaniu na początek:I have two tables ...
Aby uniknąć zduplikowanych nazw kolumn, musisz je wymienić w SELECT
klauzula jawnie - prawdopodobnie rozdając aliasy kolumn, aby uzyskać obie instancje o różnych nazwach.
Lub możesz użyć NATURAL
dołącz - jeśli pasuje do twojego niewyjaśnionego przypadku użycia:
SELECT *
FROM tbl_a a
NATURAL LEFT JOIN tbl_b b;
To łączy wszystkie kolumny, które mają tę samą nazwę i zwija je automatycznie - dokładnie tak samo, jak wymienienie wszystkich wspólnych nazw kolumn w USING
klauzula. Musisz zdawać sobie sprawę z reguł dla możliwych wartości NULL...