2017-08-11 67 views
1

我的最終目標是能夠將多個列值從一個表格更新到另一個表格,而無需逐一寫入。如何給我們一個子查詢來更新SQL中的多個列值?

我發現在IBM的網站下面的指示如何做到這一點(Link

UPDATE items 
    SET (stock_num, manu_code, quantity) = 
     ((SELECT stock_num, manu_code FROM stock 
     WHERE description = 'baseball'), 2) 
    WHERE item_num = 1 AND order_num = 1001; 

UPDATE table1 
    SET (col1, col2, col3) = 
     ((SELECT MIN (ship_charge), MAX (ship_charge) FROM orders), '07/01/2007') 
    WHERE col4 = 1001; 

我接過它,試圖對我的最終創建它,但我不斷收到「附近有語法錯誤( 」錯誤

UPDATE XX__JeremyTempTable2 
    SET (OP__DOCID, SexualPrefCode) = 
     (SELECT OP__DOCID, SexualPrefCode FROM FD__CLIENTS 
     WHERE CLIENTKEY = 726148) 
+0

用您正在使用的數據庫標記您的問題。除了我的頭頂,IBM還有Netezza,Informix,DB2/UDB。 。 。也可能是其他人。 –

+0

我們正在使用SQL-Server。 我在編碼方面仍然很「新」,這可能是多列更新不起作用的原因嗎?它只適用於informix服務器? –

回答

1

MS SQL Server的查詢將

UPDATE XX__JeremyTempTable2 
    SET OP__DOCID = FD__CLIENTS.OP__DOCID, 
     SexualPrefCode = FD__CLIENTS.SexualPrefCode 
    FROM FD__CLIENTS 
    WHERE FD__CLIENTS.CLIENTKEY = 726148 

你需要檢查manual

編輯更改爲目標的查詢這樣的錯誤。

+0

好吧,看起來我在IBM網站上找到的鏈接是用於與我目前不同的服務器。 –

1

你必須單獨設置每個變量:

UPDATE XX__JeremyTempTable2 
    SET OP__DOCID = (SELECT OP__DOCID FROM FD__CLIENTS WHERE CLIENTKEY = 726148) , 
    SexualPrefCode = (SELECT SexualPrefCode FROM FD__CLIENTS WHERE CLIENTKEY = 726148) 
+0

這也是我的想法,但是,我提供的鏈接表明它是可能的,因此混亂。 –