如何在mysql中更新多行

时间:2014-06-12 13:36:56

标签: php mysql sql

我在数据库中导入表格。此表格列为product_idext_product_idProduct_id是唯一的,但表中的ext_product_id具有相同的内容。我必须更新此多个ext_product_id。我的表有数千列。我无法手动更新这些行。

我的表格是:

    product_id     ext_product_id
      44            796666
      45            796666
      46            796666
      306           1275631
      308           1275631
      309           1275631 
       .             .
我有这样的表格:

    my table foramt is:

    product_id     ext_product_id
      44            796666
      45            796667
      46            796668
      306           1275631
      308           1275632
      309           1275633 
       .             .

如何更新?

我的查询仅适用于单个记录:

   update 13_product_id 
   set ext_product_id='796667'
   where product_id='45';

我必须更新多行,请给我一个建议。

4 个答案:

答案 0 :(得分:2)

尝试更新您的ID所在位置:

 update 13_product_id 
   set ext_product_id='796666'
   where product_id in ('45','16','15');

等等

答案 1 :(得分:1)

根据您的想法,您可以在循环中添加多个ID,而不是

where product_id = 45

你可以

where product_id in (45,46,47,48)

答案 2 :(得分:0)

如果您知道要更新的product_id,请使用 IN ,如下所示:

update product_id 
set ext_product_id='796666'
where product_id IN (45, 46, 386...);

或者,如果您想使用该ext_product_id更新所有行,只需删除“where”子句::

update product_id 
set ext_product_id='796666'

答案 3 :(得分:0)

您是否尝试更新与'45'具有相同扩展产品的所有行?如果是这样,这应该做你想要的:

update 13_product_id toupdate join
       (select ext_product_id
        from 13_product_id
        where product_id = '45'
       ) t
       on toupdate.ext_product_id = t.ext_product_id
   set toupdate.ext_product_id = '796667';