我有两张桌子:
SPC_DEVICE
SPC_CALIBRATE
SPC_DEVICE
包含一个名为CALIBRATION_DATE
的列
SPC_CALIBRATE
包含一个名为CUSER5
的列。
我想使用CUSER5
中的数据复制和替换(覆盖)CALIBRATION_DATE
中的数据。
我正在使用Oracle 11gR2
。
非常感谢您提供的任何帮助。
修改
感谢您的快速回复!我只是获得了一些我们想要完成的信息。我使用Crystal Reports提取了一份报告,它看起来像这样:
http://imageshack.com/a/img37/2456/1a8w.png
我的要求自我的首发后发生了一点变化:
如果来自CALIBRATION_DATE
表的CUSER5
与来自ID
的{{1}}匹配,则查询需要将数据从SPC_DEVICE
列复制到SPC_DEVICE_ID
列{1}}表(类似于第2行到最后一行,尽管这是手动输入的)。如果没有匹配,则跳过并不要复制。
Crystal Reports还会显示SPC_CALIBRATE
和SPC_DEVICE.ID
之间存在链接。
再次,非常感谢您的帮助。
谢谢。
答案 0 :(得分:0)
您的问题听起来像spc_calibrate
只有一行。您没有在两个表之间指定任何条件,因此您可以使用如下查询:
update spc_device
set calibration_date = (select cusers from spc_calibrate where rownum = 1);
更典型的是,有一种方法可以将行相互关联,例如:
update spc_device
set calibration_date = (select cusers
from spc_calibrate
where cusers.devicenum = spc_device.devicenum
);
答案 1 :(得分:0)
您可以像这样进行合并:
MERGE INTO spc_calibrate
USING spc_device
ON (spc_calibrate.spc_device_id = spc_device.id)
WHEN MATCHED THEN
UPDATE SET spc_calibrate.cuser5=spc_device.calibration_date
但是你需要表之间的链接才能做到这一点。 (spc_calibrate.id = spc_device.id)
此处还有一些其他合并示例:http://www.oracle-base.com/articles/10g/merge-enhancements-10g.php
(实际上,如果你的桌子只有一排,那么请看看Gordon Linoff的答案......我假设的目标更为复杂。)