0

LOAD DATA LOCAL INFILE を使用してデータを一時テーブル mid にロードしています。次に、更新クエリを使用して、テーブル product で見つかった更新を更新しています。両方で一致するフィールドはモデルのみです。

$q  = "LOAD DATA LOCAL INFILE 'Mid.csv' INTO TABLE mid 
    FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'  IGNORE 1 LINES 
    (@col1,@col2,@col3,@col4,@col5,@col6) set model=@col1,price=@col3,stock=@col6 ";
mysql_query($q, $db);


mysql_query('UPDATE mid m, products p set p.products_price= m.price,p.products_quantity= m.stock where p.products_model= m.model');

それは機能し、製品テーブルを更新します。私が抱えている問題は、更新ステートメントを使用しているため、中間テーブルに新しいレコードが挿入されないことです。

挿入クエリと重複の更新を見てきました.1つのテーブルで動作する必要がある場合の例をたくさん見ましたが、別のテーブルと一致させる必要がある場合はありません。

間違ったことを探しているか、これを行う別の方法があります。

助けていただければ幸いです。

よろしく

ナフ

4

1 に答える 1

1

product テーブルの他の列が何であるかはわかりませんが、products_model 列が products テーブルで一意であると仮定して、例の 3 つの列に基づいて機能する基本的なアプローチを次に示します。

insert into products (products_price,products_quantity,products_model)
select price, stock, model
from mid
on duplicate key update
  products_price = values(products_price),
  products_quantity = values(products_quantity)
于 2013-08-20T00:24:43.613 に答える