来自另一行的条件时的SQL更新表

时间:2018-08-09 11:04:45

标签: mysql sql prestashop

如何将这种模式加在一起?

update ps_product_shop set price.2=price.1/25.5 where id_product = *the_same* 
price.1 -> id_shop=1
price.2 -> id_shop=2
id_product -> the same for both shops

在prestashop,有价格表。在表ps_product_shop中,我在row1 id_shop = 1和ond row2 id_shop = 2

我需要更新两个不同货币商店的价格。

从id_shop = 1中获取“价格”,将其除以25.5(CZK / EUR)并将其设置为id_shop = 2的价格

我比Oracle数据库管理员要早几年,但是现在我已经没事了...:)

谢谢。科曼奇语

更新: 它是mysql,我在启动线程中将其标记为MySQL ...

在表中,

行.... id_product .... id_shop ....价格

行1 ... 12 ............ 1 .......... 500

row2 ... 12 ............ 2 .......... 8

我需要用price / 25.5更新第2行

2 个答案:

答案 0 :(得分:0)

您可以使用join。如果我理解正确:

update ps_product_shop ps2 join
       ps_product_shop ps1
       on ps1.id_product = ps2.id_product and
          ps1.id_shop = 1 and ps2.id_shop = 2
    set ps2.price = ps1.price / 25.5;

这假设每个商店/产品组合有一行。

答案 1 :(得分:0)

您可以在MySql中使用以下查询。由于两家商店的id_product都相同,因此需要在更新查询中使用加入查询。

update ps_product_shop pps1 join ps_product_shop pps2
on pps1.id_product = pps2.id_product
set pps2.price = pps1.price/25.5 where pps2.id_shop='2';