首页 > 解决方案 > INNER JOIN 3 表与参考 INFILE

问题描述

我有一个两列的 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、points_prefix、weight、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;"

标签: mysqlcsvinner-join

解决方案


我会推荐使用MySQL Workbench。它不是最好的,但它确实使此类情况更易于管理。

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

如果您对此有任何错误,请告诉我。

此外,如果你在 mac 上,你可以简单地brew cask install mysqlworkbench在终端中。


推荐阅读