我有这个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)
答案 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';
你还没有看到很多相关的代码,这让你们很难理解我的意思,但是这种接缝已经有效了,正如你们上面所见。
我已经有了这个记录,并测试了我上面写的内容并且它有效,我必须放置主键,因此它知道要更新的行,否则它将更新其他行并感到困惑。这是正确的方式,我不知道。