表a修改表b資料功能實現
今天因為原來專案方法的問題導致計算資料錯誤,現在需要將以前的資料更改回來,需要更改的表如下:
表a (學員培訓資訊表)
[sql]
stus_id integer not null,
stu_idcard varchar2(50) not null,
mas_idcard varchar2(30),
stus_starttime date not null,
stus_endtime date,
stus_totalminute integer,
stus_totalmileage integer,
stus_sinfoid integer not null,
stus_checktype varchar2(50),
stus_isok varchar2(30) default 1,
stus_carid integer,
stus_deviceid varchar2(50) not null,
ds_id integer,
consumetypeid integer default 0 not null,
createdate date,
sumofconsumption number(18,2),
createby integer,
stus_isnormal integer default 1,
stus_errorcausa varchar2(100),
region_ratio number default 0 not null,
region_min_ratio number default 0 not null,
options varchar2(200),
stus_ispass integer default 1,
stus_remark varchar2(1000),
regionids varchar2(1000)
表 b(學員學時表)
[sql]
stut_id integer not null,
stu_idcard varchar2(30) not null,
stut_sinfoid integer not null,
stut_totalperiod integer not null,
stut_lasttime date not null,
stut_totalmileage integer not null,
error_totalperiod integer default 0 not null,
error_totalmileage integer default 0 not null,
stut_nums integer default 0 not null
要根據表a中的身份證(stu_idcard)、專案編號(stus_sinfoid)來進行累加stus_totalmileage得到結果更改表b對應列值中的stut_totalmileage
首先查詢所要修改的表a資料:
[sql]
select a.stu_idcard,a.stus_sinfoid,sum(a.stus_totalmileage) from a group by a. stu_idcard,a.stus_sinfoid order by stu_idcard
根據上面得出的資料更改表b 的stut_totalmileage
起先在百度裡面找到一些方法,但都無法進行實際的轉換,最後看到 merge into函式
這個函式只能在9i及以上的版本使用。
說明:在進行sql語句編寫時,我們經常會遇到大量的同時進行insert/update的語句 ,也就是說當存在記錄時,就更新(update),不存在資料時,就插入(insert)。
語法:
[sql]
merge into table_name alias1
using (table|view|sub_query) alias2
on (join condition)
when matched then
update table_name
set col1 = col_val1,
col2 = col2_val
when not matched then
insert (column_list) values (column_values)
[where col1...];
按照上面的語法邏輯就可得出下面sql語句:
[sql]
merge into t_ds_stutime me
using
(select * from (select ec.stu_idcard,ec.stus_sinfoid,sum(ec.stus_totalmileage) cc
from t_ds_stagerec ec group by ec.stu_idcard,ec.stus_sinfoid order by ec.stu_idcard)) kk
on(me.stu_idcard=kk.stu_idcard and me.stut_sinfoid=kk.stus_sinfoid )
when matched then
update set me.stut_totalmileage=kk.cc
where me.stut_totalmileage!=kk.cc
表A修改表B資料功能實現
今天因為原來專案方法的問題導致計算資料錯誤,現在需要將以前的資料更改回來,需要更改的表如下 表a 學員培訓資訊表 stus id integer not null,stu idcard varchar2 50 not null,mas idcard varchar2 30 stus starttim...
插入資料a表到b表
insert into p web p p.tid,p.title,p.fileurl,p.columnid,p.columnname select l.tid,l.linkname,l.linkurl,3033 as columnid from p link l where l.columnid ...
Mysql A表 資料更新 B表
1.下面這個語句會拷貝表結構到新錶newadmin中。不會拷貝表中的資料 create table newadmin like admin 2.下面這個語句會拷貝資料到新錶中。注意 這個語句其實只是把select語句的結果建乙個表。所以newadmin這個表不會有主鍵,索引。create table...