ORALCE 两表结构更新
目前我做项目用到一个表,处理数据时先要过滤出要用的数据保存在另一个表中(表结构跟以前过滤数据表一样做为临时表处理业务),然后计算出二个日期来,现在要把临时表的ID相同记录的两个日期更新回数据表,ORACLE SQL如下
以下语句在SQL SERVER中可以运行在ORACLE不知道为什么不能运行
UPDATE DPS.DAY_CUT_PLAN
SET
DPS.DAY_CUT_PLAN.PLAN_START_TIME = DPS.T_DAY_CUT_PLAN.PLAN_START_TIME,
DPS.DAY_CUT_PLAN.PLAN_END_TIME = DPS.T_DAY_CUT_PLAN.PLAN_END_TIME
FROM DPS.DAY_CUT_PLAN ,DPS.T_DAY_CUT_PLAN
WHERE DPS.DAY_CUT_PLAN.WO_ID = DPS.T_DAY_CUT_PLAN.WO_ID 乔高峰 2005-11-23 于兰州烟厂信息中心
UPDATE DPS.DAY_CUT_PLAN
SET
DPS.DAY_CUT_PLAN.PLAN_START_TIME = (SELECT DPS.T_DAY_CUT_PLAN.PLAN_START_TIME FROM DPS.T_DAY_CUT_PLAN WHERE DPS.DAY_CUT_PLAN.WO_ID = DPS.T_DAY_CUT_PLAN.WO_ID),
DPS.DAY_CUT_PLAN.PLAN_END_TIME = (SELECT DPS.T_DAY_CUT_PLAN.PLAN_END_TIME FROM DPS.T_DAY_CUT_PLAN WHERE DPS.DAY_CUT_PLAN.WO_ID = DPS.T_DAY_CUT_PLAN.WO_ID)
where dps.day_cut_plan.wo_id IN (SELECT DPS.T_DAY_CUT_PLAN.WO_ID FROM DPS.T_DAY_CUT_PLAN);
以下SQL在SQL SERVER 2000下可以运行,但在ORACLE中不可以,因为ORACLE的WHERE 条件不能有两个表SET
DPS.DAY_CUT_PLAN.PLAN_START_TIME = (SELECT DPS.T_DAY_CUT_PLAN.PLAN_START_TIME FROM DPS.T_DAY_CUT_PLAN WHERE DPS.DAY_CUT_PLAN.WO_ID = DPS.T_DAY_CUT_PLAN.WO_ID),
DPS.DAY_CUT_PLAN.PLAN_END_TIME = (SELECT DPS.T_DAY_CUT_PLAN.PLAN_END_TIME FROM DPS.T_DAY_CUT_PLAN WHERE DPS.DAY_CUT_PLAN.WO_ID = DPS.T_DAY_CUT_PLAN.WO_ID)
where dps.day_cut_plan.wo_id IN (SELECT DPS.T_DAY_CUT_PLAN.WO_ID FROM DPS.T_DAY_CUT_PLAN);
以下语句在SQL SERVER中可以运行在ORACLE不知道为什么不能运行
UPDATE DPS.DAY_CUT_PLAN
SET
DPS.DAY_CUT_PLAN.PLAN_START_TIME = DPS.T_DAY_CUT_PLAN.PLAN_START_TIME,
DPS.DAY_CUT_PLAN.PLAN_END_TIME = DPS.T_DAY_CUT_PLAN.PLAN_END_TIME
FROM DPS.DAY_CUT_PLAN ,DPS.T_DAY_CUT_PLAN
WHERE DPS.DAY_CUT_PLAN.WO_ID = DPS.T_DAY_CUT_PLAN.WO_ID