0

在 MySQL 中使用 ON DUPLICATE KEY UPDATE 时遇到一些问题。下面是我试图运行的查询。

INSERT INTO `Overall` ( `rsn` , `starting_xp` , `starting_lvl` ) VALUES ( 'iWader' , '195843626' , '2281' ) ON DUPLICATE KEY UPDATE `current_xp` = '195843626' AND `current_lvl` = '2281'
  • 它插入得很好,但是当有重复时它不会更新,也不会抛出任何错误。
  • 通过 PMA 运行查询不会返回错误并且不会更新
  • 删除 ON DUPLICATE KEY UPDATE 部分会返回重复键错误

这是我的表的结构

CREATE TABLE IF NOT EXISTS `overall` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `rsn` varchar(12) NOT NULL,
  `starting_xp` int(10) unsigned NOT NULL,
  `starting_lvl` int(10) unsigned NOT NULL,
  `current_xp` int(10) unsigned NOT NULL,
  `current_lvl` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `rsn` (`rsn`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
4

2 回答 2

1

试试这个:

INSERT INTO `Overall` ( `rsn` , `starting_xp` , `starting_lvl` ) VALUES ( 'iWader' , '195843626' , '2281' ) ON DUPLICATE KEY UPDATE `current_xp` = '195843626', `current_lvl` = '2281';

AND你的UPDATE条款是错误的。AND用于布尔表达式,例如“foo true ANDbar true?” 在这里您要更新列 current_xp、current_lvl。

于 2012-03-03T18:49:46.467 回答
1

ON DUPLICATE KEY UPDATE您不需要and与字段 一起使用之后,请,改用。

ON DUPLICATE KEY UPDATE `current_xp` = '195843626', `current_lvl` = '2281'
于 2012-03-03T18:57:28.947 回答