Mysql
 sql >> Database >  >> RDS >> Mysql

MySql ottiene l'elenco di parole univoche dalla tabella in cui i valori in un campo sono separati da virgola

Puoi farlo in SQL, anche se non è carino.

select distinct reverse(substring_index(reverse(substring_index(tags, ',', n.n)), ',', 1)) as word
from t cross join
     (select 1 as n union all select 2 as n union all select 3 as n union all select 4 as n) n
having word is not null

Devi essere sicuro che la sottoquery n ha almeno il numero di parole in ogni tag.

Qui è SQLFiddle che lo dimostra.

Questo è un collegamento incrociato dei dati originali con numeri sequenziali. Quindi seleziona l'ennesimo valore dalle stringhe dei tag, utilizzando substring_index() .

Per ottenere il numero massimo di tag, puoi fare:

select max(length(tags) - length(replace(tags, ',', 1))+1
from t