mysql 更新问题

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'
是什么情况?

阅读 2.4k
3 个回答

seller_id上有唯一索引,数据库库中只能存在一条seller_id = aa 的记录。然后你的sql想把某些记录的seller_id更新为aa,出现多天seller_id一样的值的记录,由于唯一索引存在,数据库是禁止这样做的。单纯根据报错来看,可能是这个原因。

试下这个

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分别是两个字段的值,在表中或者你取到的结果集中有多个重复,所以冲突报错

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题