sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man släpper en sammanfogningsnyckel när man sammanfogar två bord

Postgres skulle inte ger dig ett felmeddelande för duplicerade utdatakolumnnamn, men vissa klienter gör det. (Dubblettnamn är inte heller särskilt användbara.)

Hur som helst, använd USING sats som kopplingsvillkor för att vika de två kopplingskolumnerna till en:

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

Medan du går med i samma tabell (själv-join) kommer det att finnas fler dubbletter av kolumnnamn. Frågan skulle knappast vara meningsfull till att börja med. Det här börjar bli vettigt för olika tabeller. Som du angav i din fråga till att börja med:I have two tables ...

För att undvika alla dubbletter av kolumnnamn måste du lista dem i SELECT klausul explicit - möjligen dela ut kolumnalias för att få båda instanserna med olika namn.

Eller så kan du använda en NATURAL gå med - om det passar ditt oförklarade användningsfall:

SELECT *
FROM  tbl_a  a
NATURAL LEFT JOIN tbl_b b;

Detta sammanfogas på alla kolumner som delar samma namn och viker dem automatiskt - exakt samma som att lista alla vanliga kolumnnamn i en USING klausul. Du måste vara medveten om regler för möjliga NULL-värden ...

Detaljer i manualen.




  1. Hur man ansluter PHP till MySQL

  2. Släpp främmande nyckel utan att veta namnet på begränsningen?

  3. Hur man matchar skräptecken i mysql-databasen med arabiska bokstäver med PHP och MYSQL

  4. Oracle yttre skarv med filtertillstånd på det andra bordet