mysql 使用 join 插入外部数据

标签 mysql

我通常足智多谋,但我被困在这一点上。任何帮助将不胜感激。

假设我有一个产品表格,如下所示,其中包括每种产品类型的已售/库存数量。

+--------------+--------------+------+-----+
| 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/

相关文章:

php - 当我使用 php 连接时,我的数据库密码是否暴露?

mysql - 创建一个查询以获得两个相同的结果

mysql - (mySQL 数据库 - 存储不同类型的相同值

mysql - 在 MySQL 中创建子分区

php - html 中的时间戳

MySQL:在一条语句中合并 2 列的结果

c# - 两个如何从两个不同的表c#获取数据

php - 与跟踪器/持久器的高效数据库交互

mysql - 如何将本地主机版本更改与生产版本同步

mysql - 收到错误 : table doesn't exist