0

2 つの共通の列 'StationID' を持つ 2 つのテーブルがあります。

Create table t1(ID int, StationID bigint)
insert into t1 values
(0,1111),
(1,2222),
(2,34),
(3,456209),
(56,78979879),
(512,546)
go
Create table t2(StationID bigint, Descr varchar(50))
insert into t2 values
(-1,'test-1'),
(0,'test0'),
(1,'test1'),
(2,'test2'),
(5001,'dummy'),
(5002,'dummy'),
(6001,'dummy')
go

ここで、すべての t1.StationID が t2.StationID にあるわけではないことに気付きました。スクリプトを実行すると、それを証明できます。

select distinct StationID from t1 as A
where not exists
(select * from t2 as B where B.StationID =A.StationID)

結果は次のとおりです。

StationID
34
546
1111
2222
456209
78979879

ここで、t2 に上記の失われた StationID を入力したいと思います。列 Descr は任意のダミー データにすることができます。私の実際のケースには何千ものレコードがあり、スクリプトを使用してそれを実装する方法は?

4

2 に答える 2

4
insert into t2 (StationID, Descr)
select distinct StationID, 'dummy' 
from t1 as A
where not exists
   (select * from t2 as B where B.StationID =A.StationID)
于 2013-03-11T13:49:38.207 に答える
2
INSERT INTO 
    t2 
SELECT DISTINCT 
    stationid, 'dummy'  
FROM 
    t1 
WHERE 
    stationid NOT IN (SELECT stationid FROM t2)

(他の代替として)。

于 2013-03-11T13:51:54.943 に答える