0

我正在使用 LOAD DATA LOCAL INFILE 将数据加载到临时表 mid.then 我使用更新查询来更新在表产品中找到的内容。两者中唯一匹配的字段是模型。

$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');

它可以工作并更新产品表。我遇到的问题是中间表中的新记录没有被插入,因为我正在使用更新语句。

我已经查看了插入查询和重复更新。我已经看到了大量示例,说明它何时必须在一个表上工作,但没有一个我必须将它与另一个表匹配。

要么我正在寻找错误的东西,要么有另一种方法可以做到这一点。

我将不胜感激任何帮助。

问候

纳夫

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 回答