Postgres by nebyl zobrazí chybu pro duplicitní názvy výstupních sloupců, ale někteří klienti ano. (Duplicitní názvy také nejsou příliš užitečné.)
V obou případech použijte USING
klauzule jako podmínka spojení pro složení dvou sloupců spojení do jednoho:
SELECT *
FROM tbl_a a
LEFT JOIN tbl_b b USING (id);
Když se připojíte ke stejné tabulce (vlastní spojení), bude více duplicitních názvů sloupců. Dotaz by pro začátek nedával téměř žádný smysl. To začíná dávat smysl pro jiné tabulky. Jak jste uvedl ve své otázce na začátek:I have two tables ...
Chcete-li se vyhnout všem duplicitním názvům sloupců, musíte je uvést v SELECT
klauzule explicitně - možná rozdávání aliasů sloupců, aby se obě instance dostaly pod různá jména.
Nebo můžete použít NATURAL
připojit se – pokud to odpovídá vašemu nevysvětlenému případu použití:
SELECT *
FROM tbl_a a
NATURAL LEFT JOIN tbl_b b;
Tím se spojí všechny sloupce, které sdílejí stejný název, a automaticky se složí – úplně stejně jako uvedení všech běžných názvů sloupců v USING
doložka. Musíte si být vědomi pravidel pro možné hodnoty NULL ...