MySQL 5.0.x
数据表goods_list
bn varchar(200)
store mediumint(8)数据表goods_new
bn varchar(200)
store mediumint(8)数据量约10w。1.bn为编号,是唯一的。store为商品库存。现需要将goods_list中的每一个商品的store库存都更新为goods_new中的store值,如果某条记录goods_new中无对应商品,则设为0。bn字段为varchar可能会影响执行效率,所以请高手给一个执行效率高的语句。2.将table1中的数据复制到table2中,两个表结构完全相同,增量复制,把table1的数据添加到table2里面。数据量10w,需要尽可能高效一些的代码。解决问题即结贴。

解决方案 »

  1.   

    问题2已解决,和mssql是一样的。
      

  2.   

    问题1:
    mysql> update goods_list set store = (select ifnull(store,0) from goods_new where goods_new.bn
    = goods_list.bn);(用到 ifnull函数)
    只要两表上的bn字段都是主键,都有内建索引,性能应该不是大问题。
      

  3.   

    1.bn为编号,是唯一的。store为商品库存。现需要将goods_list中的每一个商品的store库存都更新为goods_new中的store值,如果某条记录goods_new中无对应商品,则设为0。bn字段为varchar可能会影响执行效率,所以请高手给一个执行效率高的语句。update goods_list left join goods_new using (bn) set goods_list.store=COALESCE(goods_new.store,0);bn 上需要主键索引。
      

  4.   

    update goods_list a left join goods_new b on a.bn=b.bn set a.store=COALESCE(b.store,0);