2016-03-01 56 views
0

我嘗試更新表A列從表B中選擇數據。但是,我按照上面所述打錯誤消息「子查詢返回多個值。當子查詢遵循=,!=,<,<=,>,>=或子查詢用作表達式時,這是不允許的。子查詢返回了多個值。這是不允許的,當子查詢遵循=,!=,<, <= , >,> =

下面請找到我的代碼:

UPDATE TABLE_A 
SET CVT_FACTOR = (SELECT a.CVT_FACTOR 
FROM TABLE_A a JOIN TABLE_B b ON a.PROD_CODE = b.PROD_CODE) 

請幫助如已陷在這幾個小時了。

+0

什麼數據庫系統,您使用的?在任何情況下,您的子查詢都被用於將單個值應用於CVT_FACTOR,但能夠實現多個值返回,因此這不是一個好的設計。你應該使用實際的UPDATE/JOIN方法而不是子查詢賦值,但是不知道數據庫引擎,我們不能建議那個語法是什麼...... – jleach

回答

0

如果您只是運行子查詢SELECT a.CVT_FACTOR FROM TABLE_A a JOIN TABLE_B b ON a.PROD_CODE = b.PROD_CODE您會發現它返回多行。當您使用它來更新值時,不允許這樣做。

你可能想要做的是:

UPDATE TABLE_A SET CVT_FACTOR = (
    SELECT TABLE_B.CVT_FACTOR FROM TABLE_B 
    WHERE TABLE_B.PROD_CODE = TABLE_A.PROD_CODE 
) 
+0

實際上我找出查詢。最後,我用的是 UPDATE TABLE_A SET CVT_FACTOR = A.CVT_FACTOR FROM表-B乙JOIN TABLE_A A ON A.PROD_CODE = B.PROD_CODE 感謝,它的實際工作。 – user2256904

相關問題