PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So löschen Sie einen Join-Schlüssel, wenn Sie zwei Tabellen verbinden

Postgres würde nicht geben Ihnen einen Fehler für doppelte Ausgabespaltennamen, aber einige Clients tun dies. (Doppelte Namen sind auch nicht sehr nützlich.)

Verwenden Sie in jedem Fall den USING -Klausel als Join-Bedingung, um die beiden Join-Spalten zu einer zu falten:

SELECT *
FROM  tbl_a  a
LEFT  JOIN tbl_b b USING (id);

Während Sie derselben Tabelle beitreten (Self-Join), gibt es mehr doppelte Spaltennamen. Die Abfrage würde zunächst kaum Sinn machen. Das beginnt für Andere Sinn zu machen Tische. Wie Sie in Ihrer Frage zu Beginn angegeben haben:I have two tables ...

Um alle doppelten Spaltennamen zu vermeiden, müssen Sie diese im SELECT auflisten -Klausel explizit - möglicherweise Spaltenaliase ausgeben, um beide Instanzen mit unterschiedlichen Namen zu erhalten.

Oder Sie können einen NATURAL verwenden join - wenn das zu Ihrem ungeklärten Anwendungsfall passt:

SELECT *
FROM  tbl_a  a
NATURAL LEFT JOIN tbl_b b;

Dies verbindet alle Spalten, die denselben Namen haben, und faltet diese automatisch - genau das gleiche wie das Auflisten aller gemeinsamen Spaltennamen in einem USING Klausel. Regeln für mögliche NULL-Werte müssen beachtet werden ...

Details im Handbuch.