合并两个相同的表

时间:2012-07-16 04:25:49

标签: sql sql-server sql-server-2008

我在sql server 2008 R2中有两个表 一个表有如下记录,该表称为ASTM_Table

ASTM_Tables

另一个名为ASTM1的表格就像这样

enter image description here

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中。

是否可能,是的,那么哪个查询可以正常工作?请帮忙

4 个答案:

答案 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)

看看这个

EXCEPT and INTERSECT (Transact-SQL)

您可能希望特别关注EXCEPT stament