mysql 如何从一列中提取所有不同的标签?[duplicate]

mnemlml8  于 2023-01-04  发布在  Mysql
关注(0)|答案(2)|浏览(117)
    • 此问题在此处已有答案**:

MySQL - select distinct values from a column where values are separated by comma(3个答案)
17小时前关门了。
考虑以下数据表:
| 标签|
| - ------|
| 阿尔法|
| α,β|
| 三角洲|
| β,γ|
如何在一个查询中获得所有不同的标签?因此预期结果应该是:

    • 阿尔法**
    • 测试版**
    • 伽马射线**
    • 三角洲**

(顺序不重要)
我一直想了很多,但找不出解决办法

8yparm6h

8yparm6h1#

我们把所有的标签用''分割,然后我们使用union只保留唯一的记录:

select TRIM(SUBSTRING_INDEX(tags, ',', 1))
from tags
union 
select TRIM(SUBSTRING_INDEX(tags, ',', -1))
from tags
h22fl7wq

h22fl7wq2#

假设每条记录最多有3个CSV字 * 并且 * 您使用的是MySQL 8+,我们可以尝试使用正则表达式子串方法:

SELECT DISTINCT tags
FROM
(
    SELECT REGEXP_SUBSTR(tags, '\\w+', 1, 1) AS tags FROM yourTable
    UNION ALL
    SELECT REGEXP_SUBSTR(tags, '\\w+', 1, 2) FROM yourTable
    UNION ALL
    SELECT REGEXP_SUBSTR(tags, '\\w+', 1, 3) FROM yourTable
) t;

相关问题