sql >> Databáze >  >> RDS >> PostgreSQL

Jak vypustit jeden klíč spojení při spojování dvou tabulek

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

Podrobnosti v příručce.




  1. Vyberte MYSQL ve stejné tabulce

  2. Objekt třídy stdClass nelze převést na řetězec

  3. Připojte se ke vzdálenému serveru MySQL pomocí SSL z PHP

  4. Chování NOT LIKE s hodnotami NULL