MySQL更新(如果存在)或其他插入

MySQL更新(如果存在)或其他插入,mysql,sql,Mysql,Sql,我需要向DB插入信息,但如果信息“user\u id”已经存在,则更新如下:(问题是user\u id不是密钥) 插入访问令牌 (id、访问令牌、用户id) 价值观 (1062371433,106237146,10623714) 在重复的用户id上,您可以使用: 可能与下面的链接重复,可能会帮助您单击[此处]:听起来您可能需要对用户id进行唯一约束?然后将你的语法更新为ON DUPLICATE KEY。@Hamatti问题是“user\u id”不是表键,也不是唯一的。你不能通过复制来完成它,

我需要向DB插入信息,但如果信息“user\u id”已经存在,则更新如下:(问题是user\u id不是密钥)

插入访问令牌
(id、访问令牌、用户id)
价值观
(1062371433,106237146,10623714)
在重复的用户id上,您可以使用:


可能与下面的链接重复,可能会帮助您单击[此处]:听起来您可能需要对
用户id
进行唯一约束?然后将你的语法更新为
ON DUPLICATE KEY
。@Hamatti问题是“user\u id”不是表键,也不是唯一的。你不能通过复制来完成它,因为它不是键,所以你必须手动完成。问题是user\u id不是键,你甚至不能使它成为唯一的键。然后写一小段程序来处理这个问题。我想在这种情况下,任何声明都不会有帮助!
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)
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)
INSERT INTO access_token 
    (id,access_token,user_id)
VALUES
    (1062371433,106237146,10623714)
ON DUPLICATE KEY
    UPDATE
        access_token = VALUES(access_token);