【SQL】根據兩列資訊,整合兩張表資料
兩張表資料如下:
--2017年
id | college | score |
A001 | 北京大學 | 670 |
A002 | 中國人民大學 | 646 |
A003 | 清華大學 | 664 |
A003 | 清華大學 (定向) |
|
A004 | 北京交通大學 | 615 |
A004 | 北京交通大學 (中外合作辦學) |
|
A005 | 北京工業大學 |
|
A005 | 北京工業大學 (中外合作辦學) |
|
--2018年
id | college | score |
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 貴州醫科大學 普通
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29487349/viewspace-2646298/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- django(django學習) 兩張表建立 插入資料Django
- 【SQL 資料庫】將一張資料表資訊複製到另一張資料表SQL資料庫
- 使用SQL語句將資料庫中的兩個表合併成一張表SQL資料庫
- 編寫觸發器實現兩張表資料同步,sql程式碼如下:觸發器SQL
- 根據表查詢索引資訊索引
- 兩表中某列的資料差異
- 從兩張表中取資料的 SQL 能改寫成 Laravel Eloquent 的形式嗎?SQLLaravel
- 通過SQL查詢兩張表中不匹配的行SQL
- excel根據某一列匹配資料Excel
- pandas 兩列資料合併
- SQL server根據表名查詢表主鍵SQLServer
- MSSQL遍歷資料庫根據列值查詢資料SQL資料庫
- 根據查詢條件批量修改表資料
- PHP根據資料表自動生成CURD操作PHP
- Elasticsearch 根據陣列長度過濾資料(qbit)Elasticsearch陣列
- oracle資料庫兩表資料比較Oracle資料庫
- 根據兩個日期之間獲取LocalDate日曆列表LDA
- 能不能兩張表共用一個INDEXIndex
- Oracle兩表之間資料更新Oracle
- 根據條件動態更新不同表的資料
- Excel將一列資料變為兩列Excel
- EF:根據實體類生成表結構SQLSQL
- Laravel 中兩張資料表 left join 怎麼讓相同欄位不被覆蓋?Laravel
- Linux中 awk命令根據列的索引批次提取列的資料Linux索引
- excel兩列亂序姓名如何一一對應 excel 兩列資料自動配對Excel
- MongoDB根據內嵌文件的某個鍵刪除陣列元素的兩種方法介紹MongoDB陣列
- [資料結構] 根據前中後序遍歷中的兩種構造二叉樹資料結構二叉樹
- MyBatis 根據資料表反向生成 java 實體類等MyBatisJava
- 資料整合的兩種架構:ELT和ETL架構
- SQL 兩個表組合查詢SQL
- 兩表關聯查詢:sql、mybatisSQLMyBatis
- Excel查詢兩列資料相同的元素Excel
- Spring依賴注入的兩種方式(根據例項詳解)Spring依賴注入
- MySQL關於根據日期查詢資料的sql語句MySql
- 兩臺SQL Server資料同步解決方案SQLServer
- sql查詢一張表的重複資料SQL
- 使用SQLLOADER將每行資料根據條件插入不同表SQL
- java 根據兩個位置的經緯度,來計算兩地的距離 經緯度處理Java