sql >> Databasteknik >  >> RDS >> Mysql

Slå ihop en rad med flera rader i en annan tabell

Använd:

   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 vill ha MySQL-funktionen GROUP_CONCAT ( dokumentation ) för att returnera en kommaseparerad lista med värdet PROPERTIES.property.

Jag använde en LEFT JOIN snarare än en JOIN för att inkludera PEOPLE-poster som inte har ett värde i tabellen EGENSKAPER - om du bara vill ha en lista över personer med värden i tabellen EGENSKAPER, använd:

   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

Jag inser att detta är ett exempel, men att använda ett namn är ett dåligt val för referensintegritet när man tänker på hur många "John Smith" det finns. Att tilldela ett user_id, som är ett unikt värde per användare, skulle vara ett bättre val.



  1. Topp 18 gratis och allmänt använda NoSQL-databaser med öppen källkod

  2. Oracle-klient ORA-12541:TNS:ingen lyssnare

  3. EM 12c Justering av tröskelvärden

  4. Jämför Percona XtraBackup med MySQL Enterprise Backup:Del ett