这样的事情:
Select UNIQUE_VALUES('1,2,3,5,3,4,2,1,2,3,1,4') as CSVUnique
结果将是:
CSVUnique
1,2,3,5,4
谢谢!
答案 0 :(得分:6)
没有办法让mysql像这样获得独特性。
首先,以这种方式存储值非常糟糕。您应该使用父子表来存储此类数据,而不是存储com,这是一个单独的值。或者应该在插入之前过滤此类重复项。
规范化您的数据库。
从表中获取值并使用php explode()
,并使用array_unique
删除重复值。
答案 1 :(得分:0)
这是一种方式
CREATE TABLE t
( vals VARCHAR (100));
INSERT INTO t VALUES('1,2,3,5,3,4,2,1,2,3,1,4');
SELECT
GROUP_CONCAT(DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(vals, ',', n.digit+1), ',', -1)) val
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(vals, ',' , '')) <= LENGTH(vals)-n.digit;