2016-12-07 2 views
0

私はtable Aには1800レコード、table Bには800レコードあります。不足しているID +価格をtable Aからtable Bにコピーしたいと思います。IDと価格が1つのテーブルから別のテーブルにコピーされています

両方のテーブルのカラムが異なります。一般的な列はID

です。クエリの作成を開始しましたが、わからないのはどの列をコピーするかを指定する方法です。

は、これまでのところ、私はこの

INSERT INTO productprice 
SELECT products.productID, products.rrp FROM products 
LEFT OUTER JOIN productprice ON productprice.productID = products.productID 
WHERE productprice.productID IS NULL; 

問題も私がコピーしたい二列の値であるtable Bの列pricetable Aから列rrpである持っています。基本的には:

products.productIDproducts.rrp - >productprice.productIDproductprice.price

答えて

1

このクエリは、ここで

INSERT INTO productprice (productID, price) 
SELECT productID, rrp 
FROM products 
WHERE (productID, rrp) NOT IN 
    (SELECT productID, price 
    FROM productprice); 

を動作するはずのデモです:SQL Fiddle

1

これは動作するはずです:

INSERT INTO productprice(id,rrp) SELECT products.productID, products.rrp FROM products LEFT OUTER JOIN productprice ON productprice.productID = products.productID WHERE productprice.productID IS NULL; 

insert文で列を指定します。テーブルに他の必須の列がある場合、これはうまくいきません。

関連する問題