sql >> Database >  >> RDS >> Mysql

MySql krijgt een lijst met unieke woorden uit een tabel waarin waarden in een veld worden gescheiden door een komma

Je kunt dit in SQL doen, hoewel het niet mooi is.

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

U moet er zeker van zijn dat de subquery n heeft ten minste het aantal woorden in elke tag.

Hier is de SQLFiddle die dit aantoont.

Dit is het kruisen van de originele gegevens met volgnummers. Vervolgens kiest het de n-de waarde uit de tags-strings, met behulp van substring_index() .

Om het maximale aantal tags te krijgen, kunt u het volgende doen:

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


  1. TNSPING OK maar sqlplus geeft ORA-12154?

  2. Select-resultaten converteren naar invoegscript - SQL Server

  3. Hoe voer ik een mysqldump uit zonder een wachtwoordprompt?

  4. Opgeslagen procedures een no-go in de php/mysql-wereld?