sql >> Database >  >> RDS >> Mysql

Kan ik meerdere MySQL-rijen samenvoegen tot één veld?

U kunt GROUP_CONCAT :

SELECT person_id,
   GROUP_CONCAT(hobbies SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;

Zoals Ludwig zei in zijn commentaar, je kunt de DISTINCT . toevoegen operator om duplicaten te voorkomen:

SELECT person_id,
   GROUP_CONCAT(DISTINCT hobbies SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;

Zoals Jan in hun commentaar, je kunt de waarden ook sorteren voordat je ze implodeert met ORDER BY :

SELECT person_id, 
       GROUP_CONCAT(hobbies ORDER BY hobbies ASC SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;

Zoals Dag zei in zijn commentaar, er is een limiet van 1024 bytes op het resultaat. Om dit op te lossen, voert u deze zoekopdracht uit vóór uw zoekopdracht:

SET group_concat_max_len = 2048;

Natuurlijk kun je 2048 . wijzigen volgens uw behoeften. Om de waarde te berekenen en toe te wijzen:

SET group_concat_max_len = CAST(
                     (SELECT SUM(LENGTH(hobbies)) + COUNT(*) * LENGTH(', ')
                           FROM peoples_hobbies
                           GROUP BY person_id) AS UNSIGNED);


  1. MSDTC op server 'server is niet beschikbaar'

  2. Google BigQuery ODBC-stuurprogramma

  3. Een database importeren met phpMyAdmin

  4. Zijn er gratis tools om 'INSERT INTO'-scripts in MS SQL Server te genereren?