2012-01-27 79 views
3

我在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的任何功能來完成此操作?也許不必使用子查詢?或者這是要走的路嗎?

謝謝!

回答

9

由於在子查詢的WHERE子句就是在外部沒有必要爲子選擇同一只引用該列直接

UPDATE LOAD_SETTINGS 
SET 
    LOADDATE = UPDATEDATE 

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

哇。我正在推翻那一個。顯然,我該休息一下了。謝謝! – Paul 2012-01-27 21:34:02

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

由於ModelObject是VARCHAR這是很好的使用LIKE而不是=

相關問題