MySQL-在重复密钥上-如果其他密钥不起作用

MySQL-在重复密钥上-如果其他密钥不起作用,mysql,sql,on-duplicate-key,select-case,Mysql,Sql,On Duplicate Key,Select Case,我想在数据库中插入一个条目(uid,A,B)。如果条目已经存在,我将使用条件更新“A”和“B”列: (=旧条目;[2]=新条目) 我的问题是: INSERT INTO TableName (uid,A,B) VALUES (uid,A[2],B[2]) ON DUPLICATE KEY UPDATE A= (SELECT CASE B WHEN B[2] THEN A ELSE A[2] END), B= B[2]+1; 例1: 例2: 多谢各位 回答1:取下选择键使

我想在数据库中插入一个条目(uid,A,B)。如果条目已经存在,我将使用条件更新“A”和“B”列: (=旧条目;[2]=新条目)

我的问题是:

INSERT INTO TableName (uid,A,B) 
VALUES (uid,A[2],B[2]) 
ON DUPLICATE KEY 
UPDATE  A= (SELECT CASE B WHEN B[2] THEN A ELSE A[2] END), 
        B= B[2]+1;
例1:

例2:

多谢各位

回答1:取下选择键使其工作

INSERT INTO TableName (uid,A,B) 
VALUES (uid,A[2],B[2]) 
ON DUPLICATE KEY 
UPDATE  A= (CASE B WHEN B[2] THEN A ELSE A[2] END), 
        B= B[2]+1;
答复

试试这个:

INSERT INTO TableName (uid,A,B) 
VALUES (uid,A[2],B[2]) 
ON DUPLICATE KEY 
UPDATE  A= (IF(B=B[2],A,A[2])), 
        B= B[2]+1;

什么不起作用?你有语法错误吗?
Old entry : uid = 1; A = 2; B = 4;
New entry : uid = 1; A = 3; B = 6;
-> A = 3; B = 7; (my code works well in this ex) -> OK
INSERT INTO TableName (uid,A,B) 
VALUES (uid,A[2],B[2]) 
ON DUPLICATE KEY 
UPDATE  A= (CASE B WHEN B[2] THEN A ELSE A[2] END), 
        B= B[2]+1;
INSERT INTO TableName (uid,A,B) 
VALUES (uid,A[2],B[2]) 
ON DUPLICATE KEY 
UPDATE  A= (IF(B=B[2],A,A[2])), 
        B= B[2]+1;
INSERT INTO TableName (uid,A,B) 
VALUES (uid,A[2],B[2]) 
ON DUPLICATE KEY 
UPDATE  A= (IF(B=B[2],A,A[2])), 
        B= B[2]+1;