Dipende da come vuoi e quando vuoi ottenere i dati. Se li vuoi all'istante allora è struttura dei dati da rivedere.
Ho fatto una prova con delle tabelle. Premetto che c'è uno spazio tra gli elementi.
Ci vogliono 2 tabelle temporanee. Entrambe hanno un campo id e commento.
La tabella che contiene i dati grezzi si chiama tabella5. Stessa struttura dalle tabelle temporanee.
Alla fine metto tutto in una tabella chiamata tabellaf ma normalmente temp2 contiene tutti gli elementi. tabellaf ha solo il campo commento.
Forse optime ha un'altra soluzione.
Codice PHP:
$bdd = new PDO('mysql:host='.DB_HOST.'; dbname='.DB_NAME,DB_USER,DB_PWD, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
// cancello i dati della tabella temporanea
$deleteTemp1 = "delete from temp1";
$bdd->exec($deleteTemp1);
// cancello i dati della tabella temporanea
$deleteTemp2 = "delete from temp2";
$bdd->exec($deleteTemp2);
// inserisco i dati da contare nella tabella temporanea
$insertTemp1 ="insert into temp1 select * from tabella5";
$bdd->exec($insertTemp1);
// aggiungo uno spazion alla fine per essere sicuro di averne almeno 1
$updateTemp1 ="UPDATE `temp1` SET temp1.commento = concat(temp1.commento,' ')";
$bdd->exec($updateTemp1);
$limit = 0;
do
{
// inserisco il primo elemento di ogni riga
$insertTemp2 ="insert into temp2 (id, commento) select id, substr(commento, 1, LOCATE(' ',`commento`)) from temp1";
$bdd->exec($insertTemp2);
// aggiorno la tabella temporanea togliendo il primo elemento
$updateTemp1 ="UPDATE `temp1` SET temp1.commento = substr(commento, LOCATE(' ',`commento`)+1 )";
$countUpdates = $bdd->exec($updateTemp1);
// conto i record che contengono soli spazi
$queryConta = "select count(*) as conta from temp1 where commento = ''";
$prepared = $bdd->prepare($queryConta);
$prepared->execute();
$row = $prepared->fetch(PDO::FETCH_ASSOC);
// n° totale di ricordi che hanno soli spazi
$count = $row['conta'];
// questo per ovviare un ciclo eterno - in questo esempio al massimo ci sono 10 elementi al massimo
// è possibile modificarlo a piacimento
$limit++;
} while ($count != $countUpdates && $limit < 10);
// cancellazione dati della tabella finale
$deleteFinale = "delete from tabellaf";
$bdd->exec($deleteFinale);
// inserisco tutti gli elementi singoli
$insertFinal = "insert into tabellaf (commento) select commento from temp2";
$bdd->exec($insertFinal);
// cancello i record con uno spazio
$deleteFinale = "delete from tabellaf where commento = ' '";
$bdd->exec($deleteFinale);
print "done";