Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySql erhält eine Liste eindeutiger Wörter aus einer Tabelle, in der Werte in einem Feld durch Kommas getrennt sind

Sie können dies in SQL tun, obwohl es nicht schön ist.

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

Sie müssen sicherstellen, dass die Unterabfrage n hat mindestens die Anzahl der Wörter in jedem Tag.

Hier ist die SQLFiddle, die dies demonstriert.

Dies ist eine Querverbindung der Originaldaten mit fortlaufenden Nummern. Dann wählt es den n-ten Wert aus den Tags-Strings aus, indem es substring_index() verwendet .

Um die maximale Anzahl an Tags zu erhalten, können Sie Folgendes tun:

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