2016-01-21 76 views
0

我試圖更新單列中的所有值。該列當前僅包含NULL值。根據表達式中的多個條件更新單個列

表中有兩列需要更新,表中的新數據應該從需要匹配的更新發生。

查找問題後,似乎沒有提到它在這裏需要解決的方式。

的代碼我想出了到目前爲止(並不起作用了一下):

UPDATE ANSWER_PATTERN AS outer 
SET outer.ANSWER_DURATION = 
(
    SELECT inner.ANSWER_DURATION 
    FROM PREP_ANSWER_DURATION AS inner 
    WHERE (inner.TEST_ITEM_EXT_ID, 
      inner.STUDENT_EXT_ID) = 
      (outer.TEST_ITEM_EXT_ID, 
      outer.STUDENT_EXT_ID) 
); 

所以,我怎樣才能從表2列ANSWER_DURATION到表1,列ANSWER_DURATION得到的值,前提是TEST_ITEM_EXT_ID和STUDENT_EXT_ID列都匹配?

我會很樂意提供任何幫助。 :-)

回答

0

這裏是你會怎麼做:

UPDATE outer, inner 
SET outer.ANSWER_DURATION = inner.ANSWER_DURATION 
WHERE inner.TEST_ITEM_EXT_ID=outer.TEST_ITEM_EXT_ID AND 
     inner.STUDENT_EXT_ID=outer.STUDENT_EXT_ID; 
0

我想,這達到你在找什麼。我對你的數據庫風格的經驗是不存在的,但這是我如何使用PostgreSQL來解決問題。

UPDATE ANSWER_PATTERN t1 
SET ANSWER_DURATION = t2.ANSWER_DURATION 
FROM PREP_ANSWER_DURATION t2 
WHERE t2.TEST_ITEM_EXT_ID = t1.TEST_ITEM_EXT_ID 
    AND t2.STUDENT_EXT_ID = t1.STUDENT_EXT_ID; 
+0

它幫助找到解決方案,謝謝。雖然在SQL中不會像這樣工作,因爲第一個「ANSWER_DURATION」沒有限定詞,語言結構有些不同。 – Amataraeon