我通常足智多谋,但我被困在这一点上。任何帮助将不胜感激。
假设我有一个产品表格,如下所示,其中包括每种产品类型的已售/库存数量。
+--------------+--------------+------+-----+
| Field | Type | Null | Key |
+--------------+--------------+------+-----+
| produce_type | varchar(100) | NO | PRI |
| sold_count | int(8) | YES | |
| stock_count | int(8) | YES | |
+--------------+--------------+------+-----+
我正在使用外部数据对每个“库存”和“已售出”计数进行单独插入,一次插入数百到数千个 Produce_types。我可能只在要插入的“库存”或“已售”数据中存在给定的 Produce_type 数据,但希望所有数据都出现在表中。
因此,例如,为 sell_count ('potato', 3), ('onion', 5) 插入一个,为 stock_count ('potato', 8), ('carrots', 6) 插入一个,我会想要以这样的方式结束:
+--------------+------------+-------------+
| produce_type | sold_count | stock_count |
+--------------+------------+-------------+
| potato | 3 | 8 |
| onion | 5 | NULL |
| carrots | NULL | 6 |
+--------------+------------+-------------+
因此,我需要在第二列的插入语句上连接到现有数据,但我在这里或网络上其他地方看到的只是从另一个表插入时的连接说明。
INSERT IGNORE 不会执行此操作,因为“土 bean ”列之一不会被写入。
INSERT ... ON DUPLICATE KEY UPDATE 越来越近,但我不知道如何将更新字段设置为我插入的数据集中的值。
我需要为第二次插入(+外连接)创建一个临时表吗?有结构上更简单的方法吗?
提前致谢。
编辑:我想我可以使用这个: https://stackoverflow.com/a/3466/2540707
最佳答案
这有效吗?
insert into produce ( produce_type, sold_count )
select produce_type, sold_count from sold_data
on duplicate key update sold_count = ( select sold_count from sold_data
where produce.produce_type = sold_data.produce_type
);
关于mysql 使用 join 插入外部数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26008646/