SQL中怎么实现根据两列信息整合两张表数据
本篇内容介绍了“SQL中怎么实现根据两列信息整合两张表数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
两张表数据如下:
--2017年
A004北京交通大学615A004北京交通大学 (中外合作办学)
A005北京工业大学
A005北京工业大学 (中外合作办学)
--2018年
A004北京交通大学634A004北京交通大学 (中外合作办学)
A005北京工业大学
A005北京工业大学 (中外合作办学)
A006北京航空航天大学640A007北京理工大学636A007北京理工大学 (中外合作办学)
A008北京科技大学632Y007北京理工大学621
需求,新表四列, id college,s2017,s2018 两张表整合在一起,根据id、college
相关语句如下:
--创建2017/2018表createtablescore2017(idvarchar2(10),collegevarchar2(60),s2017int);createtablescore2018(idvarchar2(10),collegevarchar2(60),s2018int);--创建集合表createtablescore1718(idvarchar2(10),collegevarchar2(60),s2017int,s2018int);--删除2017年表中重复学校和iddeletefromscore2017wherereplace(college,'','')='广西大学(专业志愿)';--5行deletefromscore2017wherereplace(college,'','')='河北师范大学(专业志愿)';--2行--插入两张表相同数据1138行insertintoscore1718selecta.id,replace(a.college,'',''),a.s2017,b.s2018fromscore2017a,score2018bwherereplace(a.college,'','')=replace(b.college,'','')anda.id=b.idselectcount(college)fromscore1718;--1138行重复数据--插入2017年表中不相同数据80行insertintoscore1718value(id,college,s2017)selecta.id,replace(a.college,'',''),a.s2017fromscore2017awherereplace(a.college,'','')notin(selectreplace(a.college,'','')fromscore2017a,score2018bwherereplace(a.college,'','')=replace(b.college,'',''))--插入2018年表中不相同数据134行insertintoscore1718value(id,college,s2018)selectb.id,replace(b.college,'',''),b.s2018fromscore2018bwherereplace(b.college,'','')notin(selectreplace(a.college,'','')fromscore2017a,score2018bwherereplace(a.college,'','')=replace(b.college,'',''))--插入2018年表中相同学校不相同id数据8行insertintoscore1718value(id,college,s2018)selectid,college,s2018fromscore2018bwhereb.collegein(selectcollegefromscore2018groupbycollegehavingcount(*)>1)andb.idnotin(selecta.idfromscore2017a,score2018bwherereplace(a.college,'','')=replace(b.college,'','')anda.id=b.id)--对比数据selectcount(college)fromscore2017;--1218行selectcount(college)fromscore2018;--1280=1138+134+8--集合表中总数据为1360行selectcount(college)fromscore1718;--1360=1138+80+134+8行--添加类型列,提取字段altertablescore1718add(CollegeTypevarchar2(40));updatescore1718setCollegeType='普通'wherecollegenotlike'%(%)%';--982行updatescore1718setCollegeType=substr(college,instr(college,'(')+1,instr(college,')')-instr(college,'(')-1)wherecollegelike'%(%)%';--378行selectid,college,CollegeTypefromscore1718;--结果如下所示:idcolleges2017s2018CollegeTypeA650四川外国语大学582608普通A651西南财经大学619638普通A652西南政法大学612627普通A652西南政法大学(中外合作办学)599624中外合作办学A653成都体育学院540普通A655四川美术学院549570普通A656西南民族大学556582普通A657贵州大学586601普通A660贵州医科大学普通
“SQL中怎么实现根据两列信息整合两张表数据”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。