1、忽略表之間的關(guān)聯(lián)關(guān)系
成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)圖們,10年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
ALTER TABLE db2.dbo.table NOCHECK CONSTRAINT 關(guān)系名
2、--將沒有重復(fù)的數(shù)據(jù)合并
insert into db2.dbo.table(field1,field2...) select field1,field2... from db1.dbo.table a where a.username not in (select username from db2.dbo.table)
3、將重復(fù)的數(shù)據(jù)寫入臨時表
select field1,field2... into 新的臨時表 from db1.dbo.table a where a.username in (select username from db2.dbo.table)
要將兩表合并,必須要有相同的字段和字段數(shù)據(jù),ID主鍵自動增加無疑是最好的選擇。 所以,在兩個表中,都應(yīng)該有id主鍵自動增加的字段。 然后就是下面的sql語句執(zhí)行了:
我是sql初學(xué)者。
解決你的問題前我想問下,兩個表有沒有主鍵,更新數(shù)據(jù)是依據(jù)id還是姓名。
兩個表如果每個人的id是唯一并且相同則可以根據(jù)id更新,嘗試以下sql語句:
update b1 set b1.score=b2.score
from b1, b2
where b1.id=b2.id
更新姓名只需把score改為name
假設(shè)sdeg和zbug的表結(jié)構(gòu) 都是
ID varchar(4) primary key,
Name varchar(8),
Dept varchar(10),
存儲過程如下
CREATE PROCEDURE table_combine()
BEGIN
#第一步把sdeg和zbug兩個表進(jìn)行聯(lián)合輸出到臨時表tmp_tab中
create temporary table tmp_tab select * from sdeg union select * from zbut;
#第二步創(chuàng)建結(jié)果表sdut,并創(chuàng)建主鍵
create table sdut(ID varchar(4) primary key, Name varchar(8),Dept varchar(10));
#第三步把臨時表里面的重復(fù)數(shù)據(jù)過濾并寫入sdut
INSERT INTO sdut(ID,Name,Dept) SELECT distinct ID,Name,Dept FROM tmp_tab;
#drop臨時表
drop table tmp_tab;
END
將一個表的數(shù)據(jù)數(shù)據(jù)全部附加到另一個表中,只要沒有主鍵沖突的問題,直接insert select 就可以了:
insert into ta(col1,col2,...) select col1,col2,... from tb;
如果有沖突,要先將所有主鍵刪除,然后合并后,再重新建主鍵。
insert into t3 select * from t1 union select* from t2
利用union的合并去重功能來做唄