我不确定使用纯SQL(MySQL)是否可以实现,但是无论如何我都会问。我有一个这样的表:
ID TAGS ----------------------------- 1 word1,word2,word3 2 word2,word4 3 word3,word5,word6,word7 ...
我想从标签字段中选择一个所有唯一的单词,以获得类似这样的内容:
TAGS ----- word1 word2 word3 word4 word5 word6 word7
您可以在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每个标签中至少包含单词数。
n
这是演示此的SQLFiddle。
这是将原始数据与序列号交叉连接。然后,使用从标签字符串中选择第n个值substring_index()。
substring_index()
要获得最大数量的标签,您可以执行以下操作:
select max(length(tags) - length(replace(tags, ',', 1))+1 from t