2013-10-24 15 views
42

Voglio convertire i valori selezionati in una stringa separata da virgola in MySQL. Il mio codice iniziale è il seguente:stringa separata da virgola dei valori selezionati in mysql

SELECT id FROM table_level where parent_id=4; 

che ha prodotto:

'5' 
'6' 
'9' 
'10' 
'12' 
'14' 
'15' 
'17' 
'18' 
'779' 

mio output desiderato sarebbe simile a questa:

"5,6,9,10,12,14,15,17,18,779" 

risposta

94

Selezionare questa

SELECT GROUP_CONCAT(id) FROM table_level where parent_id=4 group by parent_id; 
8

Se si dispone di più righe per parent_id.

SELECT GROUP_CONCAT(id) FROM table_level where parent_id=4 GROUP BY parent_id; 

Se si desidera sostituire lo spazio con una virgola.

SELECT REPLACE(id,' ',',') FROM table_level where parent_id=4; 
+0

Vai per GROUP_CONCAT :) –

4

Prova questa

SELECT CONCAT('"',GROUP_CONCAT(id),'"') FROM table_level 
where parent_id=4 group by parent_id; 

Risultato sarà

"5,6,9,10,12,14,15,17,18,779" 
5

Uso group_concat() funzione mysql.

SELECT GROUP_CONCAT(id) FROM table_level where parent_id=4 GROUP BY parent_id; 

Vi darà stringa concatenata come:

5,6,9,10,12,14,15,17,18,779 
0

Il separatore di default tra i valori di un gruppo è virgola (,). Per specificare qualsiasi altro separatore, utilizzare SEPARATOR come mostrato di seguito.

SELECT GROUP_CONCAT(id SEPARATOR '|') 
FROM `table_level` 
WHERE `parent_id`=4 
GROUP BY `parent_id`; 

5 | 6 | 9 | 10 | 12 | 14 | 15 | 17 | 18 | 779

Per eliminare il separatore, quindi utilizzare SEPARATOR ''

SELECT GROUP_CONCAT(id SEPARATOR '') 
FROM `table_level` 
WHERE `parent_id`=4 
GROUP BY `parent_id`; 

consultare per ulteriori informazioni GROUP_CONCAT

0

Primo a set group_concat_max_len, altrimenti non lo sarà darti tutti i risultati:

SET GLOBAL group_concat_max_len = 999999; 
SELECT GROUP_CONCAT(id) FROM table_level where parent_id=4 group by parent_id; 
Problemi correlati