急。临时表来过度的SQL问题!

[复制链接]
查看11 | 回复7 | 2007-9-26 18:42:10 | 显示全部楼层 |阅读模式
有两个表,一表和二表,表结构是一样的。二表是当作临时表来过度用的。
临时表2作用:是用来,保存有被 修改 过的整条记录 (只是其中的某些字段有可以被修改过)
现在要把临时表2被 修改过的字段,updata到表1中。
现在我想知道,临时表2中的记录。和表1的不同字段怎么查找出来。用SQl语句。
我是写到pl-Sql 里,前台调用这个过程来处理,查出被 修改 过的字段。


create table AB01
(
DWID00 varchar2(10) PRIMARY KEY,
-- 单位编号
SBDJZH varchar2(10),
-- 社会保险登记证编码
ZZJGDM varchar2(10),
-- 组织机构代码
DWMC00 varchar2(10),
-- 单位名称
DWDH00 varchar2(10),
-- 单位电话
DZ0000 varchar2(10),
-- 地址
YZBM00 varchar2(10)
-- 邮政编码
)
;
create table AB01_temp as select * from ab01 ;

比如。AB01_temp 和 AB01 都有一条 DWID00 = '1' 的记录。
这时,AB01_temp 里的DWMC00,DZ0000,YZBM00等多人字段被修改了。
那我怎么写SQL语句。得出AB01_temp 里的DWMC00,DZ0000,YZBM00和
AB01里DWMC00,DZ0000,YZBM00 的值 不相同
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
这样的情况有两种方式可以用来处理:
1、删除表1中对应的那条记录(1条哦),然后将表2中对应的记录insert到表1中;
2、将表1中对应记录的所有可能被修改的记录都写到update 表1 set 子句中,set子句中“=”左边是表1的字段,“=”右边是表2中对应的字段。
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
我想知道那个字段是被修改过的啊。。。。。急。。。。急。。。。。。。。急。。。。。
有被修改过的,才update到表1
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
UP
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
考虑过用触发器来实现吗
审核技术也可以完成这个功能
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
干嘛不用trigger来实现?
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
select a.*
from AB01 a, AB02 b
where b.DWID00 =a.DWID00 (+)
and
(
nvl(a.DWMC00,'nnul') != nvl(b.DWMC00,'nul') or
nvl(a.DWDH00,'nnul') != nvl(b.DWDH00,'nul') or
nvl(a.DZ0000,'nnul') != nvl(b.DZ0000,'nul') or
nvl(a.YZBM00,'nnul') != nvl(b.YZBM00,'nul') )
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
update table1 set(a,b)=select cc.a,cc.b from table2 cc,table1ccc where cc.a!=ccc.a and cc.b=ccc.b and cc.id=ccc.id
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行