2012-07-16 89 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

相关问题