2012-07-16 107 views
0

我在sql server 2008 R2中有兩個表。
一個表有記錄如下,這個表被稱爲ASTM_Table合併兩個相同的表

ASTM_Tables

和稱爲ASTM1另一個表是這樣

enter image description here

ASTM1表包含重力與0.1差而「astm_table 「具有相差0.5的引力(但是,這張表是最新的)

我想要的全部是t o從astm1表中獲取所有這些記錄,並將它們合併到astm_table中,但只有那些astm_table中不可用的記錄。

例如,在astm_table中,重力54.1,54.2,54.3,54.4,54.6,54.7,54.8,54.9不可用。所以我想從astm1表中獲取這些值並將它們複製到astm_table中。

是否有可能,是的,然後哪個查詢會做的工作權利?請幫助

回答

3

具體看如果我「米正確認識你,你只是想插入所有行從ASTM1開始,除了已經在ASTM_Table中的那些,在那種情況下:

INSERT INTO ASTM_Table 
(astm_id,Table_No,Temperature,Gravity,Result) 
SELECT 
id, 
TBLE, 
TEMPR, 
GRV_OB, 
GRV_SP 
FROM ASTM1 
WHERE 
NOT EXISTS(SELECT * FROM ASTM_Table X WHERE X.Gravity=GRV_OB) 
+0

讓我試試......它看起來有點......解決等待 – 2012-07-16 04:44:44

+0

你能做到這一點只爲table_no「5A」請????我想只是最初添加10條記錄只是爲了檢查。我無法運行這個查詢與超過200萬條記錄沒有測試..請幫助 – 2012-07-16 04:46:58

+0

我以某種方式設法改變上述查詢,並解決了這個問題,謝謝jackson – 2012-07-16 05:45:27

1

我只是簡單地在一個示例查詢,請試試這個..

create table dbo.t1(id int identity(1,1) not null,col1 int,col2 int) 
go 
create table dbo.t2(id int identity(1,1) not null,col1 int,col2 int) 
go 
insert into dbo.t1 values(102,22),(32,33),(10,11) 
insert into dbo.t2 values(102,22),(32,33),(10,11),(33,55),(44,66) 
go 
select id,col1,col2 from t2 
except 
select id,col1,col2 from t1 
go 
drop table t1,t2 
+0

我已經解決了這個問題,但感謝努力兄弟。給予好評! – 2012-07-16 07:07:31

1

試試這個

INSERT INTO ASTM_Tables 
(Table_No,Temperature,Gravity,Result) 
SELECT TBLE, TEMPR, GRV_OB, GRV_SP 
FROM ASTM1 
WHERE 
tble = '5a' and 
not EXISTS(SELECT * FROM ASTM_Tables X WHERE X.Gravity = GRV_OB and x.table_no = tble) 
order by tble, tempr, grv_ob 
+0

感謝您的努力,我已經解決了它。謝謝 – 2012-07-16 09:57:11