2016-01-21 75 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