如何使用 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
我有一个 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