我在sql server 2008 R2中有两个表 一个表有如下记录,该表称为ASTM_Table
另一个名为ASTM1的表格就像这样
Astm1表包含重力与0.1的差异,而“astm_table”具有重力与差异为0.5(但是,此表是最新的)
我想要的是从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中。
是否可能,是的,那么哪个查询可以正常工作?请帮忙
答案 0 :(得分: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)
答案 1 :(得分: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
答案 2 :(得分: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
答案 3 :(得分:0)