2011-03-02 9 views
3

テーブル "A"からテーブル "B"への個別レコードのみを挿入したいとします。両方のテーブルが同じ構造を有すると仮定する。テーブルAからテーブルBへの個別レコードの挿入方法(どちらのテーブルも同じ構造)

+1

はヨーヨーを行いますあなたはテーブルBに存在しないレコードだけを意味しますか?表Aで一度だけ出現するレコードを意味しますか?より具体的に、使用しているRDBMSを教えてください。 – JNK

答えて

3
INSERT INTO TableB 
    (Col1, Col2, ...) 
    SELECT DISTINCT Col1, Col2, ... 
     FROM TableA 
+1

はい。これは使用するクエリです。 TheJubilexのものではありません。 – Nav

8
INSERT INTO B SELECT DISTINCT * FROM A 

あなたは、テーブルのidカラムは、個別のチェックの一部になりたいので、その場合は、このソリューションを使用しない場合があります。https://stackoverflow.com/a/5171345/453673

3

DISTINCTによってあなたはそのユニークなレコードを意味している場合、テーブルAにはまだなっていないことTableBの上にあり、その後次の操作を行います個別ことで

INSERT INTO TableB(Col1, Col2, Col3, ... , Coln) 
SELECT DISTINCT A.Col1, A.Col2, A.Col3, ... , A.Coln 
FROM TableA A 
LEFT JOIN TableB B 
ON A.KeyOfTableA = B.KeyOfTableB 
WHERE B.KeyOfTableB IS NULL 
1
INSERT INTO TableB 
      SELECT * 
      FROM TableA AS A 
      WHERE NOT EXISTS(SELECT * FROM TableB AS B WHERE B.Field1 = A.Field1) 
-- If need: B.Field2 = A.Field2 and B.Field3 = A.Field3 
関連する問題