检查以逗号分隔的值的双重条目?

时间:2013-02-26 14:36:15

标签: mysql

有没有办法获得像这样的值:“300,400,500,300”检查用逗号分隔的每个数字,如果加倍则删除它。所以价值看起来像这样:“300,400,500”。

我可以在PHP脚本中完成它,但我只是想知道是否可以使用MySQL。

2 个答案:

答案 0 :(得分:0)

创建具有唯一索引的临时表,插入忽略重复错误的值,从临时表中选择所有记录,删除表。

答案 1 :(得分:0)

快速播放,但要获得每行的唯一值,您可以使用类似

的内容
SELECT Id, GROUP_CONCAT(DISTINCT aWord ORDER BY aWord ASC)
FROM (SomeTable.Id, SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(concat(SomeColumn, ','), ' ', aCnt), ',', -1) AS aWord
FROM SomeTable
CROSS JOIN (
SELECT a.i+b.i*10+c.i*100 + 1 AS aCnt
FROM integers a, integers b, integers c) Sub1
WHERE (LENGTH(SomeColumn) + 1 - LENGTH(REPLACE(SomeColumn, ',', ''))) >= aCnt) Sub2
GROUP BY ID

这依赖于一个名为整数的表,其中一列名为i,有10行,值为0到9.它可以处理多达~1000个单词但可以很容易地改变以应对更多

可能最容易使用INSERT / ON DUPLICATE KEY UPDATE来使用它来使值唯一。