【问题标题】:MySQL update if exist else insertMySQL更新如果存在否则插入
【发布时间】: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 行收到错误,

如何解决?

谢谢,

【问题讨论】:

  • 也许下面的链接对你有帮助 点击[这里]:stackoverflow.com/questions/6382806/…
  • 听起来您可能需要对 user_id 的唯一约束?然后将您的语法更新为ON DUPLICATE KEY...
  • @Hamatti 问题是“user_id”不是表 KEY 并且不是唯一的
  • 你不能通过重复来做到这一点,因为它不是关键所以,你必须手动完成

标签: mysql sql


【解决方案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)

【讨论】:

    猜你喜欢
    • 2016-12-10
    • 2017-09-27
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多