sql >> Database >  >> RDS >> PostgreSQL

Een samenvoegsleutel laten vallen bij het samenvoegen van twee tafels

Postgres zou niet geven u een foutmelding voor dubbele uitvoerkolomnamen, maar sommige clients doen dat wel. (Dubbele namen zijn ook niet erg handig.)

Gebruik in ieder geval de USING clausule als join-voorwaarde om de twee join-kolommen in één te vouwen:

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

Terwijl u lid wordt van dezelfde tabel (self-join), zullen er meer dubbele kolomnamen zijn. De vraag zou in het begin nauwelijks zin hebben. Dit begint logisch te worden voor verschillende tafels. Zoals je in je vraag al zei om mee te beginnen:I have two tables ...

Om alle dubbele kolomnamen te vermijden, moet u ze vermelden in de SELECT clausule expliciet - mogelijk het uitdelen van kolomaliassen om beide instanties met verschillende namen te krijgen.

Of je kunt een NATURAL . gebruiken join - als dat past bij uw onverklaarbare use case:

SELECT *
FROM  tbl_a  a
NATURAL LEFT JOIN tbl_b b;

Dit voegt zich bij alle kolommen die dezelfde naam hebben en vouwt deze automatisch - precies hetzelfde als het weergeven van alle veelvoorkomende kolomnamen in een USING clausule. U moet op de hoogte zijn van regels voor mogelijke NULL-waarden ...

Details in de handleiding.




  1. Mysql selecteer telwaarden uit een enkele kolom

  2. Kunnen er meerdere primaire sleutels op een enkele tafel bestaan?

  3. Laatste (laatste) onderscheiden hoogste waarde ophalen

  4. Een voorbeeld van een RMI-toepassing uitvoeren