根据表达式中的多个条件更新单个列

Update a single column based on multiple conditions in an expression

我正在尝试更新单个列中的所有值。该列当前仅包含 NULL 值。

table 中有两列要更新,table 应从中获取需要匹配的新数据才能进行更新。

查了一下问题,这里需要解决的方法好像之前没有提到

到目前为止我想出的代码是(有点不起作用):

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)
);

那么,如果 TEST_ITEM_EXT_ID,我如何才能将 ANSWER_DURATION 列中的 table2 的值转换为 table1 中的 ANSWER_DURATION 列和 STUDENT_EXT_ID 列都匹配吗?

我很乐意提供任何帮助。 :-)

以下是您的操作方法:

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;

我认为这可以满足您的需求。我对您的数据库风格没有经验,但这就是我使用 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;