MySQL-在重复密钥上-如果其他密钥不起作用
我想在数据库中插入一个条目(uid,A,B)。如果条目已经存在,我将使用条件更新“A”和“B”列: (=旧条目;[2]=新条目) 我的问题是: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:取下选择键使
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;