SQL:UPDATE products p SET p.seller_id = (SELECT seller_id FROM goods g WHERE g.goods_id=p.goods_id) WHERE p.seller_id=0;
结果报错:ERROR 1062 (23000): Duplicate entry '6936601430233-168' for key 'uni_bn_seller'
是什么情况?
SQL:UPDATE products p SET p.seller_id = (SELECT seller_id FROM goods g WHERE g.goods_id=p.goods_id) WHERE p.seller_id=0;
结果报错:ERROR 1062 (23000): Duplicate entry '6936601430233-168' for key 'uni_bn_seller'
是什么情况?
试下这个
UPDATE products p
left join goods g on g.goods_id=p.goods_id
SET p.seller_id = g.seller_id
WHERE p.seller_id=0
ERROR 1062 (23000): Duplicate entry '6936601430233-168' for key 'uni_bn_seller'
你这个索引是个两列字段的唯一性复合索引吧?sql取得的结果6936601430233/168分别是两个字段的值,在表中或者你取到的结果集中有多个重复,所以冲突报错
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.2k 阅读✓ 已解决
2 回答2k 阅读
seller_id上有唯一索引,数据库库中只能存在一条seller_id = aa 的记录。然后你的sql想把某些记录的seller_id更新为aa,出现多天seller_id一样的值的记录,由于唯一索引存在,数据库是禁止这样做的。单纯根据报错来看,可能是这个原因。