2010-12-22 80 views
-1

我想更新一个表,其中的内容ID +列已经存在。重复的内容

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

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

所以,我尽量让一个更新,但它并没有太多工作,因为语法ISN不正确我的请求的形式SQL是:

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

该列表太长。

回答

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等)。

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的数量。

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') 

分享和享受。