mysql选择不同的逗号分隔值

Ber*_*dan 3 mysql group-by row distinct

我有一个 mysql 表

id      cid    c_name       keywords
 1       28    Stutgart    BW,Mercedes,Porsche,Auto,Germany
 2       34    Roma        Sezar,A.S. Roma
 3       28    München     BMW,Oktober Fest,Auto,Germany
Run Code Online (Sandbox Code Playgroud)

我需要一个查询来显示来自 cid=28 的关键字,但我只想看到 1 次一个关键字,例如(BW、Mercedes、Porsche、Auto、Bmw、Oktober Fest、Germany)我不想列出 2 次一个关键字,如何能解决这个问题吗?

我尝试了不同但无法得到我想要的

Mih*_*hai 5

在使用 DISTINCT 将其全部加起来之前拆分它。当然,更好的是规范化您的数据(列中不超过 1 个值)

SELECT
  GROUP_CONCAT( DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(keywords, ',', n.digit+1), ',', -1)) keyword
FROM
  t
  INNER JOIN
  (SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3  UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6) n
  ON LENGTH(REPLACE(keywords, ',' , '')) <= LENGTH(keywords)-n.digit
WHERE cid=28
Run Code Online (Sandbox Code Playgroud)

看到它工作