簡體   English   中英

將表A和表B之間的不同行插入表B

[英]Insert different rows between Table A and Table B into Table B

我有兩個完全相同的表。 表A有例如100行,表B有60行。 現在,我想將表A中的“缺失”行插入表B中。要找到不同的行,我將使用:

select * from tableA where language = 4
union
select * from tableB where language = 4

如何在“插入到”語句中正確使用此代碼? 我的點子:

Insert into tableB
(Select * from tableA where language = 4
union
select * from tableB where language = 4)

最好的祝福

UNION可能是一個選項,但會導致重復。 我更喜歡減號操作。

insert into tableB (
select * from tableA where language=4
MINUS
select * from tableB where language=4)
Insert into tableB
(Select * from tableA where language = 4
EXCEPT
select * from tableB where language = 4)

也許應該使用EXCEPT ALL ,以不同的方式對待重復項。

外連接

INSERT INTO TableB (Column1,Column2) 
  SELECT DISTINCT
    a.Column1 ,
    a.Column2 ... more column
  FROM    TableA AS a
    LEFT OUTER JOIN TableB AS b ON b.Column1 = a.Column1 
                                          AND b.Column2 = a.Column2 
    WHERE b.Colum2 IS NULL AND b.Colum1 IS NULL ; 

不存在

INSERT INTO TableB (Column1,Column2) 
SELECT  a.Column1 ,
    a.Column2...
FROM    Table1 AS a
WHERE   NOT EXISTS ( SELECT *
                 FROM   Table2 AS b
                 WHERE  b.Column1 = a.Column1 
                        AND b.Column2= a.Column2);

除了

INSERT INTO TableB (Column1,Column2) 
SELECT  Column1,
    Column2
FROM    TaBLE1
EXCEPT
SELECT  Column1,
    Column2
FROM    #TaBLE2;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM