Mysql Update不会像select一样更新

时间:2016-04-21 14:32:04

标签: mysql replace updates

我有一个很大的mysql表(20万条记录),我使用Replace和where进行了更新。我运行它并更新了大部分记录,但是当我重新运行桌面上的Select和备份时,我仍然有6或7条记录显示与之前的556相比。为了防止我重新运行Update语句,它更新了0条记录,然后只是从

更改了它
Update TableA set FieldA=Replace(FieldA,'1 ','1st ') where FieldA like '%1 %'

Select FieldA,Replace(FieldA,'1 ','1st ') where FieldA like '$1 %'

select找到迷路6记录和替换按预期执行。我不清楚更新是如何工作的。

更新:在审核时,我意识到我在表格中添加了一个唯一键,其中包含该字段。当我第一次尝试运行更新时,我收到了该错误,然后我以Update IGNORE运行。我认为这意味着它会忽略密钥并进行更新,它是否只是意味着它没有更新会导致欺骗但由于IGNORE而转移到下一条记录的记录?

1 个答案:

答案 0 :(得分:1)

正如update command上的mysql文档所说:

  

使用IGNORE关键字,即使更新期间发生错误,update语句也不会中止。不更新在唯一键值上发生重复键冲突的行。更新为导致数据转换错误的值的行将更新为最接近的有效值。

所以,是的,ignore关键字会导致所描述的行为。使用show warnings命令查看更新忽略语句引起的警告。