在MySQL中的ON DUPLICATE KEY UPDATE查询中的问题

时间:2019-02-01 07:00:02

标签: mysql

我已设置此查询

 INSERT INTO pa_users (fname,lname,email,phone,fbid) VALUES ?
    ON DUPLICATE KEY UPDATE fbid=VALUES(fbid),
    fname= VALUES(fname),lname= VALUES(lname),email= VALUES(email),phone= VALUES(phone)

我正在传递此obj

{ 
   fname: 'Demo',
   lname: 'User',
   email: 'demo@facebook.com',
   phone: '6352417890',
   fbid: 'KHFDALJHGJDGWKGKDFDAFAJKLGEKLQAW' 
}

在运行此查询时,出现sql语法错误。

注意:fbid不是pk。

错误:

 code: 'ER_PARSE_ERROR',
 errno: 1064,
 sqlMessage: 'You have an error in your SQL syntax; check the manual that 
 corresponds to your MariaDB server version for the right syntax to use near 
 \'`fname` = \'Demo\', `lname` = \'user\', `email` = \'user@facebook.com\', 
 `phone` = \'63\' at line 1',
 sqlState: '42000',
 index: 0,
 sql: 'INSERT INTO pa_users (fname,lname,email,phone,fbid) VALUES `fname` = 
 \'Demo\', `lname` = \'user\', `email` = \'user@facebook.com\', `phone` = 
 \'6352417890\', `fbid` = \'KHFDALJHGJDGWKGKDFDAFAJKLGEKLQAW\'\n        ON 
 DUPLICATE KEY UPDATE fbid=VALUES(fbid),\n        fname= 
 VALUES(fname),lname= VALUES(lname),email= VALUES(email),phone= 
 VALUES(phone)' }

2 个答案:

答案 0 :(得分:0)

尝试像这样拆分查询

INSERT INTO table(a, b) values ('fgfg', 'fgfg') ON DUPLICATE KEY UPDATE 
fbid=VALUES(fbid);

答案 1 :(得分:0)

您的主键或唯一键是什么?如果出现重复,则无需更新该值。就像如果fbid是主键/唯一键,查询将是

INSERT INTO pa_users (fname, lname, email, phone, fbid) VALUES ?
ON DUPLICATE KEY UPDATE fname = VALUES(fname), lname = VALUES(lname), email = VALUES(email), phone = VALUES(phone);
相关问题