sql >> Databasteknik >  >> RDS >> Mysql

MySql få lista över unika ord från tabell där värden i ett fält separeras med kommatecken

Du kan göra detta i SQL, även om det inte är snyggt.

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

Du måste vara säker på att underfrågan n har minst antalet ord i varje tagg.

Här är SQLFiddle som visar detta.

Detta är korssammanfogning av originaldata med sekventiella nummer. Den plockar sedan ut det n:e värdet från taggsträngarna med substring_index() .

För att få maximalt antal taggar kan du göra:

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


  1. Viktig PostgreSQL-övervakning - Del 2

  2. Långsam enkel uppdateringsfråga på PostgreSQL-databas med 3 miljoner rader

  3. UTC_TIMESTAMP() Exempel – MySQL

  4. Ostrukturerat innehåll:en outnyttjad bränslekälla för AI och maskininlärning