SQL中怎么实现根据两列信息整合两张表数据

发布时间:2021-11-09 11:38:34 作者:iii
来源:亿速云 阅读:150

本篇内容介绍了“SQL中怎么实现根据两列信息整合两张表数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

两张表数据如下:

--2017年

idcollegescore
A001北京大学         670
A002中国人民大学     646
A003清华大学         664
A003清华大学         (定向)
A004北京交通大学     615
A004北京交通大学     (中外合作办学)
A005北京工业大学     
A005北京工业大学     (中外合作办学)

--2018年

idcollegescore
A001北京大学                                  680
A002中国人民大学     662
A003清华大学         671
A003清华大学         (院校特定要求)
A004北京交通大学     634
A004北京交通大学     (中外合作办学)
A005北京工业大学     
A005北京工业大学     (中外合作办学)
A006北京航空航天大学 640
A007北京理工大学     636
A007北京理工大学     (中外合作办学)
A008北京科技大学     632
Y007北京理工大学     621

需求,新表四列, id  college,s2017,s2018  两张表整合在一起,根据id、college

相关语句如下:

--创建2017/2018表
create table score2017 (id varchar2(10),college varchar2(60),s2017 int);
create table score2018 (id varchar2(10),college varchar2(60),s2018 int);
--创建集合表
create table score1718 (id varchar2(10),college varchar2(60),s2017 int,s2018 int);
--删除2017年表中重复学校和id
delete from score2017 where replace(college,' ','')='广西大学(专业志愿)';  --5行
delete from score2017 where replace(college,' ','')='河北师范大学(专业志愿)';  --2行
--插入两张表相同数据  1138行
insert into score1718 select a.id,replace(a.college,' ',''),a.s2017,b.s2018 from score2017 a,score2018 b where replace(a.college,' ','')=replace(b.college,' ','') and a.id=b.id  
select count(college) from score1718;  --1138 行重复数据
--插入2017年表中不相同数据  80行
insert into score1718 value(id,college,s2017) select a.id,replace(a.college,' ',''),a.s2017 from score2017 a where replace(a.college,' ','') not in (select replace(a.college,' ','') from score2017 a,score2018 b where replace(a.college,' ','')=replace(b.college,' ','')) 
--插入2018年表中不相同数据  134行
insert into score1718 value(id,college,s2018) select b.id,replace(b.college,' ',''),b.s2018 from score2018 b where replace(b.college,' ','') not in (select replace(a.college,' ','') from score2017 a,score2018 b where replace(a.college,' ','')=replace(b.college,' ',''))
--插入2018年表中相同学校不相同id数据   8行
insert into score1718 value(id,college,s2018) select id,college,s2018 from score2018 b where b.college in (select college from score2018 group by college having count(*) > 1) and b.id not in(select a.id from score2017 a,score2018 b where replace(a.college,' ','')=replace(b.college,' ','') and a.id=b.id)
--对比数据
select count(college) from score2017;  --1218行
select count(college) from score2018;  --1280=1138+134+8
--集合表中总数据为1360行
select count(college) from score1718;   --1360=1138+80+134+8行
--添加类型列,提取字段
alter table score1718 add (CollegeType varchar2(40));
update score1718 set CollegeType='普通' where college not like '%(%)%';  --982行
update score1718 set CollegeType=substr(college,instr(college,'(')+1,instr(college,')')-instr(college,'(')-1) where  college like '%(%)%';  --378行
select id,college,CollegeType from score1718;
--结果如下所示:
id			college					s2017 s2018  CollegeType
A650	四川外国语大学				582	   608	普通
A651	西南财经大学				619	   638	普通
A652	西南政法大学				612	   627	普通
A652	西南政法大学(中外合作办学)	599	   624	中外合作办学
A653	成都体育学院				540	   		普通
A655	四川美术学院				549	   570	普通
A656	西南民族大学				556	   582	普通
A657	贵州大学					586	   601	普通
A660	贵州医科大学					   		普通

“SQL中怎么实现根据两列信息整合两张表数据”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. SQL 增加列、修改列、删除列
  2. python怎么实现两张图片的像素融合

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

sql

上一篇:数据库中如何修改数据文件的位置

下一篇:Oracle的密码文件及操作系统认证知识点有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》