我在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的任何功能?也许不必使用子查询?或者这是要走的路?
谢谢!
答案 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';
由于Model
和Object
是varchar,因此最好使用LIKE
代替=
。