使用来自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';
答
UPDATE LOAD_SETTINGS
SET LOADDATE = UPDATEDATE
WHERE MODEL LIKE 'A001'
AND OBJECT LIKE 'A';
由于Model
和Object
是VARCHAR这是很好的使用LIKE
而不是=
。
哇。我正在推翻那一个。显然,我该休息一下了。谢谢! – Paul 2012-01-27 21:34:02