2012-03-31 14 views
1

私は、supplier_referenceに基づいて、あるテーブル(ps_product)の製品の価格を別のテーブル(tmp_bmb)から更新しようとしています。他のテーブルからのMySQL UPDATEクエリは、影響を受ける0行を返します

次のクエリは、MySQLに細かい動作します、ps_product FROM

SELECT * tmp_bmb tmp_bmb.supplier_reference = ps_product.supplier_reference

と1700行を返します。

しかし、対応する(私の意見では)UPDATEクエリはしていません:

UPDATEのps_product、tmp_bmbのSETのps_product.price = tmp_bmb.price tmp_bmb.supplier_reference = ps_product.supplier_reference

戻って影響を受けた0行。

私のテーブルには、これらのようなものです:

ps_product: supplier_reference | price

ps_product.supplier_referenceでは、レコードは一意ではなく、ヌルもあります。したがって、主キーにすることはできません。

tmp_bmb: supplier_reference |価格(これは新しい価格です)tmp_bmbで

サプライヤリファレンスは、あなたの助けを事前に主キー

感謝です!

+1

これは関連するかもしれません:http://stackoverflow.com/a/2186952/894885 –

答えて

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

ありがとう、マシュー!それはそうだった... 私はすべての等値データを返すために使用したとき* ps_product、tmp_bmbどこtmp_bmb.supplier_reference = ps_product.supplier_referenceとps_product.price = tmp_bmb.price;それはすべてのデータを返しました! – Dimiter