我正在使用LOAD DATA LOCAL INFILE将数据加载到临时表中。然后我使用更新查询来更新表格产品。两者中唯一匹配的字段是模型。
$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');
它工作并更新产品表。我遇到的问题是中间表中的新记录没有插入,因为我正在使用更新语句。
我已经查看了插入查询并在duplicate上进行了更新。我已经看到了大量的示例,它们必须在一个表上工作但没有必须将它与另一个表匹配。
要么我正在寻找错误的东西,要么就是另一种方法来做到这一点。
我将不胜感激。
问候
NAF
答案 0 :(得分:1)
我不确定产品表中的其他列是什么,但是这里的基本方法应该基于示例中的3列,假设products_model列在products表中是唯一的:
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)