使用来自Oracle中同一行的值更新列

问题描述:

我在Oracle中创建SQL命令以将“LOADDATE”的值更新为等于我的表上的“UPDATEDATE”的值。我在这里的工作原理:使用来自Oracle中同一行的值更新列

BEGIN 
    UPDATE LOAD_SETTINGS 
    SET 
     LOADDATE = (
     SELECT UPDATEDATE 
     FROM LOAD_SETTINGS 
     WHERE 
      MODEL = 'A001' 
      AND OBJECT = 'A' 
    ) 
    WHERE 
     MODEL = 'A001' 
     AND OBJECT = 'A'; 
    COMMIT; 
END; 

有一件事我知道肯定有关Oracle的是,有很多,我不知道。有没有更好的方法来使用我可能不熟悉的Oracle的任何功能来完成此操作?也许不必使用子查询?或者这是要走的路吗?

谢谢!

由于在子查询的WHERE子句就是在外部没有必要为子选择同一只引用该列直接

UPDATE LOAD_SETTINGS 
SET 
    LOADDATE = UPDATEDATE 

WHERE 
    MODEL = 'A001' 
    AND OBJECT = 'A'; 
+0

哇。我正在推翻那一个。显然,我该休息一下了。谢谢! – Paul 2012-01-27 21:34:02

UPDATE LOAD_SETTINGS 
SET LOADDATE = UPDATEDATE 
WHERE MODEL LIKE 'A001' 
AND OBJECT LIKE 'A'; 

由于ModelObject是VARCHAR这是很好的使用LIKE而不是=