0

我的问题是有什么方法可以在 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 中执行的方法。

注意:不幸的是,我无法更改表结构。(已编辑)

谢谢

4

2 回答 2

0

如果您的表格格式正确,那么可以。您需要Item成为键、Number数字列和Item,Number主键。然后你可以这样做:

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

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

于 2013-05-28T02:05:31.807 回答
0

你可以这样做:

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

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

于 2013-05-28T02:05:45.603 回答