在mysql中字符串唯一性的类似功能

时间:2013-05-28 01:58:43

标签: php mysql

我的问题是有没有办法在mySQL中执行此功能: $str = implode(',',array_unique(explode(',', $str)));。 由于我在循环中进行表更新,我需要检查列中是否已存在该字符串。像

这样的东西
Item | Numbers
A    | 1,2,4
B    | 6,7,8
C    | 2,7,5

因此,如果有一个条目应该添加到B行,比如7,8,30,它应该只在字符串中添加30。所以B | 6,7,8,30。 我知道首先选择行并在PHP中执行,我正在寻找一种直接在mySQL中执行的方法。

注意:遗憾的是我无法更改表格结构。 (编者)

由于

2 个答案:

答案 0 :(得分:0)

如果你的桌子格式正确,那么是的。您需要Item作为密钥,Number作为数字列,Item,Number作为主键。然后你可以这样做:

INSERT IGNORE INTO table VALUES ('B',7), ('B',8), ('B',30)

添加值时,这将忽略重复项。在获取数据时,您可以简单地获取Item='B'的所有行并将其删除。

答案 1 :(得分:0)

您可以这样做:

update t
    set Numbers = (case when Numbers = '' then '30'
                        else concat(Numbers, ',', 30)
                   end)
    where item = 'B';

但是,数据结构对于您想要完成的任务并不是很好。你应该有一个名为ItemNumbers的表,每个行中都有一个项目和一个数字。