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更新如果存在否则插入的主要内容,如果未能解决你的问题,请参考以下文章

如果存在则如何更新,否则在php mysql中插入[重复]

MYSQL从另一个表更新数据,如果存在,否则插入[重复]

如果已存在则更新行,否则使用 mysql 在表中插入新记录

SQL 查询 - 如果存在则更新,否则插入

如果 id 存在则更新,否则插入 (ODBC)

mysql 表中数据不存在则插入,否则更新数据