2012-03-31 2 views
1

supplier_reference를 기반으로 한 테이블 (ps_product)의 제품 가격을 다른 테이블 (tmp_bmb)에서 업데이트하려고합니다.다른 테이블의 MySQL UPDATE 쿼리가 영향을받은 행이 0 개임

다음 쿼리는 MySQL의에서 잘 실행 :

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

반환 1700 행.

그러나 (내 생각에) 상응하는 UPDATE 질의하지 않습니다 :

업데이트 ps_product, tmp_bmb 세트 ps_product.price = tmp_bmb.price tmp_bmb.supplier_reference = ps_product.supplier_reference

반환 0 행이 영향을 WHERE .

내 테이블은 다음과 같다 :

ps_product : supplier_reference | 가격

ps_product.supplier_reference에서 레코드는 고유하지 않으며 null도 있습니다. 따라서 기본 키가 될 수 없습니다.

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

Matthew 대단히 감사합니다! 그건 그렇고 ... 내가 모든 동등한 데이터를 반환하는 데 사용되는 경우 * ps_product, tmp_bmb 어디 tmp_bmb.supplier_reference = ps_product.supplier_reference 및 ps_product.price = tmp_bmb.price; 그것은 모든 데이터를 반환했습니다! – Dimiter

관련 문제