关于重复密钥更新的mysql

时间:2011-02-25 04:58:38

标签: mysql database

我正在使用mysql选项更新重复结果。它可以很好地更新结果。现在我试图将现有行结果与前一行结果连接起来,并使用+和。连接运算符,但它给出错误。

这是伪代码

insert in table 1
on duplicate key update prod_name = "abc" concatenate with existing result

所以如果行中有记录XYZ,那么它应该是XYZ,abc和下一个 复制它应该是XYZ,abc,dpg等

2 个答案:

答案 0 :(得分:3)

我相信你正在寻找mysql函数concat()docs)。

SQL看起来像这样:

INSERT INTO table (prod_name) VALUES ('abc')
  ON DUPLICATE KEY UPDATE prod_name=concat(prod_name,',','abc')

答案 1 :(得分:2)

使用

$sql= " INSERT INTO table (prod_name) VALUES ($x)
  ON DUPLICATE KEY UPDATE prod_name='prod_name+$x' ";

注意: prod_name应为 UNIQUE index PRIMARY KEY

修改

试试这个

  $sql= " INSERT INTO table (prod_name) VALUES ($x) ";
  $sql .= is_numeric($x) 
   ? " ON DUPLICATE KEY UPDATE prod_name=prod_name+$x "
   : " ON DUPLICATE KEY UPDATE prod_name=CONCAT_WS(',',prod_name, $x) ";