MySQL更新多行结果从API

问题描述:

说,我有一个4列的表。前两列来源于饲料。我需要使用来自API请求的结果来更新列值1和值2。从API请求的值应该进入value1和数值2MySQL更新多行结果从API

+---------+------+-------+-------+ 
| prod_id | name | value1| value2| 
+---------+------+-------+-------+ 
| 1105 | aat |  |  | 
| 1108 | bbv |  |  | 
| 1111 | ccq |  |  | 
| 1116 | dde |  |  | 
| 1123 | iir |  |  | 
| 1125 | jjm |  |  | 
+---------+------+-------+-------+ 

例如API请求给我的这些值:

1108, banana, apple 
1116, cucumber, pineapple 
1123, orange, melon 

因此,在这个例子中,我想更新这3条记录,但在我的情况下,我会一次更新大约1000-2000条记录。

+---------+------+--------+----------+ 
| prod_id | name | value1 | value2 | 
+---------+------+--------+----------+ 
| 1105 | aat |  |   | 
| 1108 | bbv |banana |apple  | 
| 1111 | ccq |  |   | 
| 1116 | dde |cucumber|pineapple | 
| 1123 | iir |orange |melon  | 
| 1125 | jjm |  |   | 
+---------+------+--------+----------+ 

我怎么能够更新,说2000条记录仅使用一种或查询了一把?我是否需要使用临时表或者有没有办法解决?

+0

我想你不得不使用一个中间语言,而不是直接从MySQL,PHP一样,C#,JAVA,C++等查询的数据库 - >查询API - >更新数据库 –

How to bulk update mysql data with one query?中所述,您可以使用CASE实施一种批量更新。

或者,如果您控制数据库架构,则可以在批处理INSERT语句中插入API调用的结果,然后在需要查找特定值时插入JOIN

A

+---------+------+ 
| prod_id | name | 
+---------+------+ 
| 1105 | aat | 
| 1108 | bbv | 
| 1111 | ccq | 
| 1116 | dde | 
| 1123 | iir | 
| 1125 | jjm | 
+---------+------+ 

B

+---------+----------+-----------+ 
| prod_id | value1 | value2 | 
+---------+----------+-----------+ 
| 1108 | banana | apple  | 
| 1116 | cucumber | pineapple | 
| 1123 | orange | melon  | 
+---------+----------+-----------+ 

当结果是从API调用它们可以间歇地插入检索。

INSERT INTO B (prod_id, value1, value2) VALUES 
(1108, 'banana', 'apple'), 
(1116, 'cucumber', 'pineapple'), 
(1123, 'orange', 'melon') 

以后如果需要,例如用于prod_id 1108的所有值,你可以检索它们丝毫简单的表格AB的加盟。

SELECT A.prod_id, A.name, B.value1, B.value2 
FROM A JOIN B ON A.prod_id = B.prod_id 
WHERE A.prod_id = 1108 
+0

的[链接] (http://*.com/questions/11664684/how-to-bulk-update-mysql-data-with-one-query)你提供的是非常有帮助的。对我而言,最简单的解决方案是用户雅罗斯拉夫提到的“重复关键更新”。 – dean2020