sql >> Database teknologi >  >> RDS >> Mysql

Føj en række til flere rækker i en anden tabel

Brug:

   SELECT x.name,
          GROUP_CONCAT(y.property SEPARATOR ', ')
     FROM PEOPLE x
LEFT JOIN PROPERTIES y ON y.name = x.name
    WHERE x.age > 26
 GROUP BY x.name

Du vil have MySQL-funktionen GROUP_CONCAT ( dokumentation ) for at returnere en kommasepareret liste over PROPERTIES.property-værdien.

Jeg brugte en LEFT JOIN i stedet for en JOIN for at inkludere PEOPLE-poster, der ikke har en værdi i tabellen EGENSKABER - hvis du kun vil have en liste over personer med værdier i tabellen EGENSKABER, skal du bruge:

   SELECT x.name,
          GROUP_CONCAT(y.property SEPARATOR ', ')
     FROM PEOPLE x
     JOIN PROPERTIES y ON y.name = x.name
    WHERE x.age > 26
 GROUP BY x.name

Jeg er klar over, at dette er et eksempel, men at bruge et navn er et dårligt valg for referencemæssig integritet, når man tænker på, hvor mange "John Smith" der er. At tildele et user_id, som er en unik værdi pr. bruger, ville være et bedre valg.



  1. mysql - INDSÆT datointerval i datokolonner, HVIS datoer ikke overlapper med eksisterende

  2. MySQL Auto-increment primærnøgle øges med 10

  3. H2 opdatering med join

  4. Problemer med indholdstyper ved indlæsning af en armatur i Django