【问题标题】:Duplicate content重复内容
【发布时间】:2010-12-22 13:15:23
【问题描述】:

我想更新一个包含 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'), .... 

列表太长了。

【问题讨论】:

    标签: mysql mysql-error-1062


    【解决方案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')
    

    分享和享受。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        如果您插入新的 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 等)中返回。

        【讨论】:

          【解决方案4】:

          如果你想插入一行,如果它已经存在就更新它的内容,使用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 的数量。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-02-13
            • 2017-05-17
            • 2018-01-02
            • 2012-04-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多