0

SQL Server2008R2に2つのテーブルがあります。
1つのテーブルには次のようなレコードがあります。このテーブルはASTM_Tableと呼ばれます。

ASTM_Tables

ASTM1と呼ばれる別のテーブルは次のようになります

ここに画像の説明を入力してください

Astm1テーブルには0.1の差の重力が含まれていますが、「astm_table」には0.5の差の重力があります(ただし、このテーブルは最新です)

私が欲しいのは、astm1テーブルからそれらすべてのレコードを取得し、それらをastm_tableにマージすることですが、astm_tableで使用できないレコードのみです。

たとえば、astm_tableでは、gravity 54.1、54.2、54.3、54.4、54.6、54.7、54.8、54.9は使用できません。したがって、これらの値をastm1テーブルから取得し、astm_tableにコピーします。

それは可能ですか?はい、どのクエリが正しく機能しますか?助けてください

4

4 に答える 4

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)
于 2012-07-16T04:41:09.117 に答える
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
于 2012-07-16T09:56:13.067 に答える
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
于 2012-07-16T07:06:23.733 に答える
0

これを見てください

EXCEPTおよびINTERSECT(Transact-SQL)

EXCEPTあなたは特にstamentを見たいかもしれません

于 2012-07-16T04:36:58.133 に答える