MySQL更新如果存在否则插入
Posted
技术标签:
【中文标题】MySQL更新如果存在否则插入【英文标题】:MySQL update if exist else insert 【发布时间】:2014-09-24 06:38:36 【问题描述】:我需要向数据库插入信息,但如果信息“user_id”已经存在更新,像这样:(问题是user_id不是KEY)
INSERT INTO access_token
(id,access_token,user_id)
VALUES
(1062371433,106237146,10623714)
ON DUPLICATE user_id <=== receive error in this line
UPDATE
access_token = VALUES(access_token)
但在第 5 行收到错误,
如何解决?
谢谢,
【问题讨论】:
Insert to table or update if exists (mysql) 的可能重复项 也许下面的链接对你有帮助 点击[这里]:***.com/questions/6382806/… 听起来您可能需要对user_id
的唯一约束?然后将您的语法更新为ON DUPLICATE KEY
...
@Hamatti 问题是“user_id”不是表 KEY 并且不是唯一的
你不能通过重复来做到这一点,因为它不是关键所以,你必须手动完成
【参考方案1】:
你可以用这个:
INSERT ON DUPLICATE KEY UPDATE
INSERT INTO access_token
(id,access_token,user_id)
VALUES
(1062371433,106237146,10623714)
ON DUPLICATE KEY
UPDATE
access_token = VALUES(access_token);
【讨论】:
问题是 user_id 不是关键 你甚至不能让它成为唯一键? 然后编写一小段程序来处理这个问题。我想在这种情况下任何陈述都无济于事!【参考方案2】:set @founded_id=(select user_id from access_token where user_id='10623714');
if(@founded_id='10623714')then
update access_token set ............
else
INSERT INTO access_token
(id,access_token,user_id)
VALUES
(1062371433,106237146,10623714)
【讨论】:
以上是关于MySQL更新如果存在否则插入的主要内容,如果未能解决你的问题,请参考以下文章