2011-01-13 45 views
0

テーブルAにテーブルAのデータを挿入しようとしていますが、テーブルBのTAble Cのデータと一致するユニークなデータですが、私は間違って 表Aに何をやっている - 表Bをbookfeed - bookF 表C - bookStatssql server table1からtable2にtable1 = table3のデータを挿入する

INSERT INTO bookFeed 
(entryId,feed,entryContent,pubDate,authorName,authorId,age, 
    sex,locale,pic,fanPage, faceTitle,feedtype,searchterm,clientId,dateadded) 
SELECT DISTINCT b.entryId,b.feed,b.entryContent,b.pubDate,b.authorName, 
    b.authorId,b.age,b.sex,b.locale,b.pic,b.fanPage,b.faceTitle,b.feedtype, 
    b.searchterm, b.clientId,b.dateadded 
    FROM bookF as b 
    INNER JOIN bookStats as a on a.feed = b.feed 
     WHERE NOT EXISTS (SELECT * 
          FROM bookFeed as c 
          WHERE c.entryId = b.entryId) 

表A bookFeedはエントリId

答えて

2

テーブルbookFのように見えますが、エントリごとに重複したレコードがあります 1つのentryId(bookFeedでPKによって制限されている)だけが必要な場合は、これを使用できます。 ROW_NUMBERで注文を調整して

insert into bookFeed (
    entryId,feed,entryContent,pubDate,authorName,authorId,age, 
    sex,locale,pic,fanPage,faceTitle,feedtype,searchterm,clientId,dateadded) 
select 
    entryId,feed,entryContent,pubDate,authorName,authorId,age, 
    sex,locale,pic,fanPage,faceTitle,feedtype,searchterm, clientId,dateadded 
from 
(
    select rn=Row_number() over (partition by b.entryId order by b.entryId), 
     b.entryId,b.feed,b.entryContent,b.pubDate,b.authorName,b.authorId,b.age, 
     b.sex,b.locale,b.pic,b.fanPage,b.faceTitle,b.feedtype,b.searchterm, b.clientId,b.dateadded 
    from bookF as b 
    inner join bookStats as a on a.feed = b.feed 
    left join bookFeed as c on c.entryId=b.entryId 
    where c.entryId is null 
) X 
where rn=1 
+0

ありがとう、それは完璧に働いた。 – vbNewbie

1

UPDATEに主キーがあります照会あなたのためにこれを試してみて、どうかを確認しますそれは動作し、データを見て、すべてのエントリがeを持つはずの重複があるかどうかを確認します現在そこにあるものとは異なるntry番号 -

SELECT b.entryId,b.feed,b.entryContent,b.pubDate,b.authorName, 
    b.authorId,b.age,b.sex,b.locale,b.pic,b.fanPage,b.faceTitle,b.feedtype, 
    b.searchterm, b.clientId,b.dateadded 
    FROM bookF as b 
    INNER JOIN bookStats as a on a.feed = b.feed 
     WHERE b.entryId IN (SELECT distinct entryid 
          FROM bookFeed) 

私はあなたが挿入しようとした値は、nullで重複していないかのいずれかの他に違反している場合(チェック主キーであるエントリIDを挿入しようとしていると思いますプライマリキーの制約)...それで、自動的に入力された場合、またはIDの挿入をオンにしようとしている場合に、挿入しようとしないでください...

理想的にはあなたのID (自動インクリメントなど)を計算し、直接挿入しないでください。

+0

申し訳ありませんが、これは明らかです。私はそれが正しいと考えましたが、重複をスキップして他のすべてのデータを挿入したかっただけです。だから、私は別名を使用しようとしましたが、私は同じentryIdsがあったと思うが、他のフィールドは違うと思う。ありがとう – vbNewbie

+0

その答えは、IDを保持するテーブル間のインポート/転送の問題に対処していないようです。これは質問が尋ねているようです。あなたのポイントは、アイデンティティの列と新しいデータが古いものに変わっていることです。どちらも問題ではありません。 – RichardTheKiwi

関連する問題