MySQL 由 space 分隔的不同单词与单个列

MySQL distinct word that separated by space from a single column

假设我有一列标签。此标签由 space.

分隔
|tags                  |
|apple banana melon    |
|apple banana pineapple|
|apple melon pineapple |

我想获取列标签中的所有单词,用 space 分隔并删除重复的单词。所以我会得到这样的输出:

|unique_tags|
|apple      |
|banana     |
|melon      |
|pineapple  |

如何在 mysql 中执行此操作?

首先你应该更好地重构你的数据库模式。

但我看到很多这样的问题,我更喜欢 this 解决方案。

如果您同意,您可以这样调整它以适应您的情况:

http://sqlfiddle.com/#!9/2fd5e/7

SELECT DISTINCT
  SUBSTRING_INDEX(SUBSTRING_INDEX(t1.tags, ' ', numbers.n), ' ', -1) tag
FROM
  numbers 
INNER JOIN t1
  ON CHAR_LENGTH(t1.tags)
     -CHAR_LENGTH(REPLACE(t1.tags, ' ', ''))>=numbers.n-1

提到您必须创建 numbers table,记录数和连续值直到您在 tags 字段列表中期望的最大数值。