INNER JOIN 3个表,参考号INFILE

时间:2019-03-22 02:33:24

标签: mysql csv inner-join

我有两列的csv,col1是条形码,col2是库存数量。

我有3张桌子。 表1:product_option_value 字段:product_option_value_id,product_option_id,product_id,option_id,option_value_id,数量,减法,价格,price_prefix,积分,points_prefix,重量,weight_prefix

表2:product_option_newvalue 字段:product_id,product_option_value_id,sku,upc

我正在尝试使用CSV文件中的sku和数量来更新表product_option_value的QUANTITY字段,我遇到麻烦的部分是我必须使用product_option_newvalue表中的product_option_value_id来更新product_option_value中的QUANTITY字段,我如何在两者之间引用?

这就是我所拥有的。它不起作用。

CREATE TABLE oc_product_import LIKE oc_product_option_value;
LOAD DATA INFILE '/var/lib/mysql-files/out.csv'
       INTO TABLE oc_product_import 
       FIELDS TERMINATED BY ','
       OPTIONALLY ENCLOSED BY '"'
       (sku, quantity);
UPDATE oc_product_option_value AS R 
INNER JOIN oc_product_import AS P 
       ON R.product_option_value_id = P.product_option_value_id 

SET R.quantity = P.sku; 
DROP TABLE product_import;"

编辑:我的问题似乎是条形码仅存储在product_option_newvalue中,并且只能通过引用两个表中的product_option_value_id链接到数量,以更新product_option_value表中的数量。

EDIT2:这是对我有用的类似代码。但这不必引用我正在两个表中使用的PRODUCT_OPTION_VALUE_ID问题,因为条形码包含在产品表中,而不是引用中的其他表

DROP TABLE IF EXISTS oc_product_import; 
CREATE TABLE oc_product_import LIKE oc_product
LOAD DATA INFILE '/var/lib/mysql-files/out.csv'
INTO TABLE oc_product_import 
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY ';'
(sku, quantity);
UPDATE oc_product AS R 
INNER JOIN oc_product_import AS P 
ON R.sku = P.sku 
SET R.quantity = P.quantity; 
DROP TABLE oc_product_import;"

1 个答案:

答案 0 :(得分:1)

我建议使用MySQL Workbench。这不是最好的方法,但绝对可以简化此类情况的处理。

设置完成后,您可以右键单击表格并选择table data import wizard,然后以这种方式手动添加csv文件。

如果您对此有任何错误,请通知我。

此外,如果您使用的是Mac,则只需在终端中brew cask install mysqlworkbench