文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

oracle两张结构完全相同表,判断比较字段,如果字段不同,

2024-04-02 19:55

关注

需求:oracle两张结构完全相同表,判断比较字段,如果字段不同,则将数据放入第三张表

参考博客:https://bbs.csdn.net/topics/350192411

                 https://blog.csdn.net/qq_15003505/article/details/80471649

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

演示数据

create table t1(

  user_id integer not null,

  first_name varchar(20),

  last_name varchar(20),

  grade varchar(20),

  constraint tA1_pkey primary key(user_id)

)



create table t2(

  user_id integer not null,

  first_name varchar(20),

  last_name varchar(20),

  grade varchar(20),

  constraint tA2_pkey primary key(user_id)

)



insert into t1(user_id,first_name,last_name,grade)values(1,'Some','Dude','A');

insert into t1(user_id,first_name,last_name,grade)values(2,'Other','Guy','B');

insert into t1(user_id,first_name,last_name,grade)values(3,'You are','Welcome','B');

insert into t1(user_id,first_name,last_name,grade)values(4,'What','Other','A');

insert into t1(user_id,first_name,last_name,grade)values(5,'INeed','You','C');

insert into t1(user_id,first_name,last_name,grade)values(6,'Mixed','Nuts','Z') ;

insert into t1(user_id,first_name,last_name,grade)values(7,'Kirk','Land','B');

insert into t1(user_id,first_name,last_name,grade)values(8,'Bit','Shooter','A'); 

insert into t1(user_id,first_name,last_name,grade)values(9,'Sun','Microsystem','C');

insert into t1(user_id,first_name,last_name,grade)values(10,'Extra','Fancy','B');



insert into t2(user_id,first_name,last_name,grade)values(1,'Some','Dude','A');

insert into t2(user_id,first_name,last_name,grade)values(2,'Other','Guy','B');

insert into t2(user_id,first_name,last_name,grade)values(3,'You are','Welcome','B');

insert into t2(user_id,first_name,last_name,grade)values(4,'What','Other','A');

insert into t2(user_id,first_name,last_name,grade)values(5,'INeed','You','C');

insert into t2(user_id,first_name,last_name,grade)values(6,'Mixed','Nuts','C'); 

insert into t2(user_id,first_name,last_name,grade)values(7,'Kirk','Land','B');

insert into t2(user_id,first_name,last_name,grade)values(8,'Bit','Shooter','A');

insert into t2(user_id,first_name,last_name,grade)values(9,'Sun','Microsystem','C');

insert into t2(user_id,first_name,last_name,grade)values(10,'Extra','Fancy','B');

insert into t2(user_id,first_name,last_name,grade)values(11,'Jack','Fancy','B');

commit;


创建表

create  table  t3 as 


select a.user_id   as cur_user_id,

       a.first_name as cur_firstname,

       a.last_name  as cur_lastname,

     a.grade     as cur_grade,

       b.first_name as  before_firstname,

       b.last_name  as  before_lastname,

     b.grade     as  before_grade

from 

(select user_id,

        first_name,

        last_name,

    grade

       from t2 

  ) a

 full join 

  (

        select user_id,

        first_name,

        last_name,

    grade

  from t1) b

  on  a.user_id=b.user_id



delete  from t3 



-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

处理方法

declare

    user_id                   varchar(200);

cur_firstname             varchar(200);

cur_lastname              varchar(200);

    cur_grade                 varchar(200);

    before_user_id            varchar(200);

    before_firstname          varchar(200);

    before_lastname           varchar(200);

before_grade              varchar(200);


cursor c_job is


select a.user_id   as cur_user_id,

       a.first_name as cur_firstname,

       a.last_name  as cur_lastname,

   a.grade     as cur_grade,

       b.first_name as  before_firstname,

       b.last_name  as  before_lastname,

   b.grade     as  before_grade

from 

(select user_id,

        first_name,

        last_name,

grade

       from t2 

  ) a

 full join 

  (

        select user_id,

        first_name,

        last_name,

grade

  from t1) b

  on  a.user_id=b.user_id

  where a.user_id is not null;    

c_row c_job%rowtype;

begin

  for c_row in c_job loop 

if (c_row.cur_firstname<>c_row.before_firstname

    or c_row.cur_lastname<>c_row.before_lastname

or c_row.cur_grade<>c_row.before_grade)  then

  insert into  t3(cur_user_id,cur_firstname,cur_lastname,cur_grade,before_firstname,before_lastname,before_grade)

  values(c_row.cur_user_id,

  c_row.cur_firstname,

  c_row.cur_lastname,

  c_row.cur_grade,

  c_row.before_firstname,

  c_row.before_lastname,

  c_row.before_grade);

     end if;

    end loop; 

   commit; 

end;







阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯