GROUP_CONCAT和DISTINCT很棒,但我如何摆脱这些仍然存在的重复?

tab*_*ber 2 mysql database duplicates group-concat

我有一个像这样设置的mysql表:

id   uid   keywords
--   ---   ---
1    20    corporate
2    20    corporate,business,strategy
3    20    corporate,bowser
4    20    flowers
5    20    battleship,corporate,dungeon

我希望我的输出看起来像是:

20    corporate,business,strategy,bowser,flowers,battleship,dungeon

但我最接近的是:

SELECT DISTINCT uid, GROUP_CONCAT(DISTINCT keywords ORDER BY keywords DESC) AS keywords
 FROM mytable
 WHERE uid !=0
 GROUP BY uid

哪个输出:

20    corporate,corporate,business,strategy,corporate,bowser,flowers,battleship,corporate,dungeon

有没有人有办法解决吗?非常感谢提前!

Dav*_*vid 5

您使用纯SQL的方式无法实现数据结构化.

没有SQL实现会考虑"企业"和"企业,业务",并将它们视为相同的字符串.因此,明显不起作用.

如果可以控制数据库,

我要做的第一件事是将数据设置更改为:

id   uid   keyword     <- note, not keyword**s** - **ONE** value in this column, not a comma delimited list
1    20    corporate
2    20    corporate
2    20    business
2    20    strategy
Run Code Online (Sandbox Code Playgroud)

更好的是

id   uid   keywordId    
1    20    1
2    20    1
2    20    2
2    20    3
Run Code Online (Sandbox Code Playgroud)

与关键字的单独表格

KeywordID    KeywordText
1            Corporate
2            Business
Run Code Online (Sandbox Code Playgroud)

否则你需要在代码中按摩数据.