根据2列中的数据插入或更新行-1个主要列和1个唯一列

时间:2019-07-18 12:20:34

标签: php mysql database

我有一个像这样的表结构:

  • id(主要)bigint
  • 属性(唯一)varchar(逗号分隔 数字)
  • product_id bigint
  • 价格文字

如果属性和产品ID匹配,因此该行已经存在,那么我只想更新价格,否则,创建一个新行。

我有此代码,它是循环的一部分,它将发送多个INSERT INTO查询,这些查询包含不同的属性,产品ID和价格,现在它无法确定属性和产品ID是否匹配并显示为仅更新属性列中匹配的价格:

INSERT INTO my_table (id,attributes,product_id,price) VALUES ('','61','4000','500') ON DUPLICATE KEY UPDATE价格= '500'

我尝试在属性和产品ID列上都定义唯一,但是这样做时,它会更新仅与属性匹配的现有行上的价格(当产品ID不匹配时,价格便会添加到错误的行)+未创建新行。

也许答案是不同的结构。我该怎么办?

1 个答案:

答案 0 :(得分:0)

尝试

INSERT INTO my_table (attributes,product_id,price) VALUES ('61','4000','500') ON DUPLICATE KEY UPDATE price= '500'