要对某个表table进行批插入,但是不可以插入重复的记录
表中有一个唯一约束 (phone, sales)
其中sales可以为null
现在要用INSERT IGNORE插入一批数据,里面只有(phone)
发现重复插入同一批数据是可以成功的,因为sales为null是可以重复的
这种状况如何解决啊?
要对某个表table进行批插入,但是不可以插入重复的记录
表中有一个唯一约束 (phone, sales)
其中sales可以为null
现在要用INSERT IGNORE插入一批数据,里面只有(phone)
发现重复插入同一批数据是可以成功的,因为sales为null是可以重复的
这种状况如何解决啊?
UNIQUE INDEX allows multiple NULL values for columns. MySQL唯一索引是允许多个Null存在的。
MySQL Bugs: #8173: unique index allows duplicates with null values
依旧是建议sales设置个默认值,先修改表结构,然后剔除旧的重复数据,幸好group by认为null与null是一致的,大概SQL如下,建议先备份表测试:
delete from ** where id not in (select mid from (select min(id) mid from ** group by phone, sales)t)
5 回答3.2k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
1 回答2.9k 阅读✓ 已解决
5 回答1.4k 阅读
unique还可以为null,当然不行了,改为not null default ''吧