Posso concatenare più righe di MySQL in un campo?
Usando MySQL
, posso fare qualcosa come:
SELECT hobbies FROM peoples_hobbies WHERE person_id = 5;
Il mio risultato:
shopping
fishing
coding
ma invece voglio solo 1 riga, 1 colonna:
Uscita prevista:
shopping, fishing, coding
Il motivo è che sto selezionando più valori da più tabelle, e dopo tutte le join ho molte più righe di quelle che vorrei.
Ho cercato una funzione su MySQL Doc e non sembra che le funzioni CONCAT
o CONCAT_WS
accettino set di risultati, quindi qualcuno qui sa come farlo?
1135
3
Puoi usare
GROUP_CONCAT
:Come ha detto Ludwig nel suo commento, puoi aggiungere l'operatore
DISTINCT
per evitare i duplicati:Come affermato da Jan nel suo commento, puoi anche ordinare i valori prima di implodere usando
ORDER BY
:Come ha detto Dag nel suo commento, c'è un limite di 1024 byte sul risultato. Per risolverlo, esegui questa query prima della tua query:
Naturalmente, puoi cambiare
2048
in base alle tue esigenze. Per calcolare e assegnare il valore:Dai un'occhiata a
GROUP_CONCAT
se la tua versione di MySQL (4.1) lo supporta. Vedi la documentazione per maggiori dettagli.Sembrerebbe qualcosa del genere:
C'è una funzione GROUP Aggregate, GROUP_CONCAT.