Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将数据从多个表复制到一个表而不重复_Sql Server_Sql Server 2008 R2 - Fatal编程技术网

Sql server 将数据从多个表复制到一个表而不重复

Sql server 将数据从多个表复制到一个表而不重复,sql-server,sql-server-2008-r2,Sql Server,Sql Server 2008 R2,我想将源(1&2)表中的数据插入到目标表中,但不重复 表:来源 SONGs ARTISTs ALBUM s Baby John RocknRoll Moon Mike Moonlight Firefly Chad Garden 表:Source2 SONGs ARTISTs

我想将
(1&2)表中的数据插入到
目标
表中,但不重复

表:
来源

       SONGs       ARTISTs         ALBUM s
       Baby         John          RocknRoll
       Moon         Mike          Moonlight
       Firefly      Chad           Garden
表:
Source2

       SONGs       ARTISTs         ALBUMs
       Happy        Jane           Fresh
       Baby         John          RocknRoll
       Bday         Zelda           Link
表:
目的地

ID     SONG       ARTIST         ALBUM       CATALOG#     TRACK#   <--- Columns
 1     baby        John        RocknRoll
然而,在两个表上都尝试了这个代码之后,我仍然得到了一个重复的代码


我尝试了UNION,但我有两个以上的源表?

使用
UNION
删除重复项并添加一个额外的
不存在
子句:

  select SONGs , ARTISTS , ALBUMS
  from Source 

   Union

   select SONGs , ARTISTS , ALBUMS
   from Source2 
INSERT INTO Destination(SONG, ARTIST, ALBUM)
    SELECT * 
    FROM(
        SELECT SONGs, ARTISTs, ALBUMs
        FROM Source
        UNION 
        SELECT SONGs, ARTISTs, ALBUMs
        FROM Source2
    )t
    WHERE
        NOT EXISTS(
            SELECT 1
            FROM DESTINATION
            WHERE
                SONG = t.SONGs
                AND ARTIST = t.ARTISTs
                AND ALBUM = t.ALBUMs
        )

您可以执行
UNION
istead of
JOIN

INSERT INTO Destination
     (SONG,
     ARTIST,
     ALBUM)

SELECT 
     So.SONGs,
     So.ARTISTs,
     So.ALBUMs
FROM (
     SELECT So.SONGs,
            So.ARTISTs,
            So.ALBUMs
     FROM Source

     UNION

     SELECT So.SONGs,
            So.ARTISTs,
            So.ALBUMs
     FROM Source2

     UNION

     SELECT So.SONGs,
            So.ARTISTs,
            So.ALBUMs
     FROM Source3

     UNION

     SELECT So.SONGs,
            So.ARTISTs,
            So.ALBUMs
     FROM Source4

     UNION

     SELECT So.SONGs,
            So.ARTISTs,
            So.ALBUMs
     FROM Source5

     )
WHERE
     Ds.SONG IS NULL
 AND Ds.SONG IS NULL
 AND Ds.SONGIS NULL

如果我有两个以上的
source
表,如何实现这一点?当我以后需要从新的
source
表添加数据时,应该使用什么代码?谢谢。这对我有用。但是,如果我将从一个新的
表中添加数据呢?。我的意思是在使用上述代码之后,您可以在
WHERE
子句中使用
notexists
INSERT INTO Destination
     (SONG,
     ARTIST,
     ALBUM)

SELECT 
     So.SONGs,
     So.ARTISTs,
     So.ALBUMs
FROM (
     SELECT So.SONGs,
            So.ARTISTs,
            So.ALBUMs
     FROM Source

     UNION

     SELECT So.SONGs,
            So.ARTISTs,
            So.ALBUMs
     FROM Source2

     UNION

     SELECT So.SONGs,
            So.ARTISTs,
            So.ALBUMs
     FROM Source3

     UNION

     SELECT So.SONGs,
            So.ARTISTs,
            So.ALBUMs
     FROM Source4

     UNION

     SELECT So.SONGs,
            So.ARTISTs,
            So.ALBUMs
     FROM Source5

     )
WHERE
     Ds.SONG IS NULL
 AND Ds.SONG IS NULL
 AND Ds.SONGIS NULL