2012-03-31 78 views
1

我试图从另一个表(tmp_bmb)基于他们的supplier_reference更新产品在一个表(ps_product)中的价格。MySQL更新查询从另一个表返回0行受影响

下面的查询在MySQL运行良好:

SELECT * FROM ps_product,tmp_bmb WHERE tmp_bmb.supplier_reference = ps_product.supplier_reference

,并返回1700行。

但相应的(在我看来)UPDATE查询并不:

UPDATE ps_product,tmp_bmb SET ps_product.price = tmp_bmb.price WHERE tmp_bmb.supplier_reference = ps_product.supplier_reference

返回0行受到影响。

我的表是这样的:

ps_product: supplier_reference |价格

在ps_product.supplier_reference中,记录不是唯一的,也有空值。因此它不能成为主键。

tmp_bmb: supplier_reference |价格(这是新的价格)

在tmp_bmb供应商的参考是主键

很多感谢您的帮助!

+1

这可能是相关的:http://stackoverflow.com/a/2186952/894885 – 2012-03-31 02:06:25

回答

1

看起来好像你得到0行受到影响,因为没有数据实际上正在改变 - 也就是说,ps_product.price已经和tmp_bmb.price一样。

为了证实这一点,试试这个为你的初始查询:

SELECT * FROM ps_product, tmp_bmb WHERE tmp_bmb.supplier_reference = ps_product.supplier_reference and ps_product.price!=tmp_bmb.price; 

,你应该得到0行。

+0

非常感谢你马修!那是这种情况... 当我用来返回所有相等的数据SELECT * FROM ps_product,tmp_bmb WHERE tmp_bmb.supplier_reference = ps_product.supplier_reference和ps_product.price = tmp_bmb.price;它返回了所有的数据! – Dimiter 2012-03-31 15:01:26

相关问题