sql >> Databáze >  >> RDS >> Mysql

Spojte jeden řádek s více řádky v jiné tabulce

Použijte:

   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

Chcete funkci MySQL GROUP_CONCAT ( dokumentaci ), aby se vrátil seznam hodnot PROPERTIES.property oddělený čárkami.

Použil jsem LEFT JOIN spíše než JOIN, abych zahrnul záznamy PEOPLE, které nemají hodnotu v tabulce PROPERTIES - pokud chcete pouze seznam lidí s hodnotami v tabulce PROPERTIES, použijte:

   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

Uvědomuji si, že toto je příklad, ale použití jména je špatnou volbou pro referenční integritu, když uvážíte, kolik existuje „John Smith“. Lepší volbou by bylo přiřazení user_id jako jedinečné hodnoty na uživatele.



  1. Jak vytvořit uložené procedury PL/SQL s parametry v databázi Oracle

  2. C++ Program komunikující s MySQL databází

  3. EF dotaz na Oracle házení ORA-12704:nesoulad znakové sady

  4. Rozdíl mezi NullIf() a IfNull() v SQLite