-1

我想更新一个包含 ID + 列的表 SQL 已经存在。

问题是当我想插入时它给了我一个消息错误:

**#1062 - Duplicate entry '35' for key 1**

因此,我尝试进行更新,但它也不起作用,因为语法不正确,我的请求 SQL 的形式是:

INSERT INTO `liens_series` 
(`id`, `id_series`, `password`) 
VALUES (35, '12', 
'<br>Saison 3 en cours de production'), .... 

清单太长了。

4

4 回答 4

1

您可能想要调查 MySQL 中 INSERT 语句的 ON DUPLICATE KEY UPDATE 子句。简而言之,您的陈述可能会更改为

INSERT INTO `liens_series`
  (`id`, `id_series`, `password`)
VALUES
  (35, '12',  '<br>Saison 3 en cours de production')
ON DUPLICATE KEY UPDATE `id_series` = '12',
                        `password` = '<br>Saison 3 en cours de production')

分享和享受。

于 2010-12-22T14:02:13.240 回答
0

使用这个:http ://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html 它会做你想做的事,如果需要,插入或更新。

于 2010-12-22T13:17:32.553 回答
0

如果您插入一个尚未确定 id 的新行:

INSERT INTO `liens_series` (`id`, `id_series`, `password`) VALUES (NULL, '12', '<br>Saison 3 en cours de production');

或者

INSERT INTO `liens_series` (`id_series`, `password`) VALUES ('12', '<br>Saison 3 en cours de production');

新的 id 将在LAST_INSERT_ID()(MySQL) 或mysql_insert_id()(C, PHP 等) 中返回。

于 2010-12-22T13:32:45.793 回答
0

如果要插入一行,并更新其内容(如果已存在),请使用REPLACE INTO

REPLACE INTO `liens_series` (`id`, `id_series`, `password`) VALUES (35, '12', '<br>Saison 3 en cours de production');

请注意,在幕后,id 为 35 的行将被删除(如果存在)然后INSERT发出。因此,您不能仅部分更新该行,受影响的行数反映了 DELETES 的隐式数量 + INSERTS 的数量。

于 2010-12-22T13:37:41.850 回答