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条记录仅使用一种或查询了一把?我是否需要使用临时表或者有没有办法解决?
答
如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的所有值,你可以检索它们丝毫简单的表格A
和B
的加盟。
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
我想你不得不使用一个中间语言,而不是直接从MySQL,PHP一样,C#,JAVA,C++等查询的数据库 - >查询API - >更新数据库 –