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 ofJOIN
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