如何进行重复键更新语句

时间:2016-04-04 04:52:59

标签: mysql sql database

我有这个SQL语句用于将数据插入我的数据库,我只需要在输入重复值时更新,我该怎么做呢?我需要使用主键还是可以使用特定值

您看到的auto_incremented列是名为license_id的主键

SQL CODE

INSERT INTO License
  (license_id, 
  license_number, 
  start_date, 
  end_date, 
  duration, 
  expiry_date)
VALUES
  ('5', 
  '00005555', 
  '2015-11-22', 
  '2015-11-23', 
  '1', 
  '2015-11-24')

on duplicate key update  ????

我用问号填写什么

我刚刚做了类似的事情,它没有工作

INSERT INTO License
  (license_id, 
  license_number, 
  start_date, 
  end_date, 
  duration, 
  expiry_date)
VALUES
  ('5', 
  '00005555', 
  '2015-11-23', 
  '2015-11-24', 
  '1', 
  '2015-11-25')

on duplicate key update license_id = values(license_id)

2 个答案:

答案 0 :(得分:0)

执行on duplicate key update license_id = values(license_id)没有意义,因为您尝试插入的license_id已经存在于表格中,它只会将现有记录的license_id更改为与以前相同的价值。相反,on duplicate key update旨在更新其他值。在你的情况下,它可能是,例如,

on duplicate key update
    license_number = values(license_number)
    start_date = values(start_date),
    end_date = values(end_date),
    duration = values(duration),
    expiry_date = values(expiry_date);

答案 1 :(得分:0)

我找到了怎么做,我试过没有主键,数据库刚刚搞砸了,它输入了一条新记录,所以我做了这个,使用了不同的表

INSERT INTO Product (product_id,product_name, version) VALUES ('1', 'nfinityX', '5')
on duplicate key update product_id='1', product_name='infinity', version='5';

你还没有看到很多相关的代码,这让你们很难理解我的意思,但是这种接缝已经有效了,正如你们上面所见。

我已经有了这个记录,并测试了我上面写的内容并且它有效,我必须放置主键,因此它知道要更新的行,否则它将更新其他行并感到困惑。这是正确的方式,我不知道。