2012-03-31 50 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

相關問題