Mysql
 sql >> база данни >  >> RDS >> Mysql

MySql получава списък с уникални думи от таблица, където стойностите в поле са разделени със запетая

Можете да направите това в SQL, въпреки че не е красиво.

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

Трябва да сте сигурни, че подзаявката n има поне броя на думите във всеки етикет.

Тук е SQLFiddle, който демонстрира това.

Това е кръстосано свързване на оригиналните данни с последователни номера. След това избира n-тата стойност от низовете на етикетите, използвайки substring_index() .

За да получите максимален брой тагове, можете да направите:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите ER модел на база данни от сървър с Workbench

  2. Как да изберете всеки n-ти ред в mySQL, започващ от n

  3. Използване на LIKE в bindParam за MySQL PDO заявка

  4. Django ManyToMany с множество бази данни

  5. mysql regex utf-8 символа