如何使用 group_concat 删除列中的重复单词?

How to remove duplicate words within columns using group_concat?

我有一个 table,在 TableA.ColumnA 中有这样的记录:

New York City
New York
New Rochelle
York Town

我在做

Select group_concat(ColumnA SEPARATOR ';') from TableA

但自然而然地结束了;

New York City; New York; New Rochelle; York Town

当我要找的是:

New; York; City; Rochelle; Town

换句话说,我希望每个 columnA 中的每个词都与 ColumnA 中的其他词进行比较,并删除所有匹配的词,这样我就没有重复的 'keywords'。

我可以在 group_concat 中以某种方式执行此操作吗?还是我需要先 运行 进行一些处理?

假设您的 mySql 支持 json_table,最简单的方法是将字符串转换为 json 数组并拆分成行,然后您可以聚合不同的列表:

select group_concat(words separator '; ') result
from (
  select distinct words
  from tableA t
  join json_table(
    replace(json_array(t.columnA), ' ', '","'),
    '$[*]' columns (words varchar(50) path '$')
  ) j
)t

example Fiddle