sql >> Base de Datos >  >> RDS >> Mysql

MySql obtiene una lista de palabras únicas de la tabla donde los valores en un campo están separados por comas

Puedes hacer esto en SQL, aunque no es bonito.

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

Debe asegurarse de que la subconsulta n tiene al menos el número de palabras en cada etiqueta.

Aquí es el SQLFiddle que demuestra esto.

Esta es la unión cruzada de los datos originales con números secuenciales. Luego selecciona el valor n de las cadenas de etiquetas, usando substring_index() .

Para obtener el número máximo de etiquetas, puede hacer:

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