MySQL UPDATE QUERY重复错误

时间:2013-01-23 21:20:41

标签: mysql sql-update

让我们看看我是否可以解决这个问题,因为这对我的中级MySQL技能来说非常复杂。

问题:

我需要在我的一个数据库表中更新一些数据。问题是我正在更新的数据与多行绑定。

id mailing_list_id subscriber_id

9031 51 81053

9112 52 81053

13535 71 81053

我需要更新mailing_list_id 52并将其重命名51但是subscriber_id已经存在且mailing_list_id为51,所以我想在更新期间跳过该记录。

当我使用以下内容时:

UPDATE subscriptions SET mailing_list_id = 51 WHERE mailing_list_id = 52;

我收到错误消息,说有重复的条目。

我需要做的是忽略查询中的重复项,但我不知道如何编写查询。任何帮助将不胜感激。

我需要在查询中添加一些内容,以跳过订阅者ID已经拥有邮件列表ID#的行,与我尝试将其更改为的列相同。不确定这是否有意义,或者在这一点上我是在漫无边际。我知道我想做什么我只是不知道查询语法或方法来实现它。

2 个答案:

答案 0 :(得分:2)

mail_list_id有哪些字段有索引(唯一或主要)?如果是,那么你无法改变其他行中存在的数据。

解决方案是: 1.您在字段mailing_list_id中删除了额外的密钥(唯一或主要密钥)。 2.或者,在删除表预订后,创建新表并删除表,在下面运行查询以创建新表预订。

CREATE TABLE subscriptions (
     id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
     mailing_list_id INT(11),
     subscriber_id INT(11)
);

答案 1 :(得分:0)

虽然我不建议将其作为永久性解决方案,但这应该可以消除您的错误,这样您就可以在计划更好的架构时使事情正常工作 - 唯一键,REPLACE INTO等。

UPDATE IGNORE subscriptions SET mailing_list_id = 51 WHERE mailing_list_id = 52;