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

时间:2012-01-27 21:26:21

标签: sql oracle

我在Oracle中创建一个SQL命令来更新" LOADDATE"等于" UPDATEDATE"在我的桌子上。我在这里工作:

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的任何功能?也许不必使用子查询?或者这是要走的路?

谢谢!

2 个答案:

答案 0 :(得分:11)

由于子查询的where子句与外部的where子句相同,因此不需要subselect直接引用该列

UPDATE LOAD_SETTINGS 
SET 
  LOADDATE = UPDATEDATE 

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

答案 1 :(得分:0)

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

由于ModelObject是varchar,因此最好使用LIKE代替=