我的问题是有没有办法在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中执行的方法。
注意:遗憾的是我无法更改表格结构。 (编者)
由于
答案 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
的表,每个行中都有一个项目和一个数字。