繁体   English   中英

MySQL用API结果更新多行

[英]MySQL UPDATE multiple rows with results from API

说,我有一个包含4列的表格。 前2列来自Feed。 我需要使用API​​请求的结果来更新value1和value2列。 API请求中的值应进入value1和value2

+---------+------+-------+-------+
| 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条记录? 我需要使用临时表还是没有方法?

您可以使用CASE实施一种批量更新,如如何使用一个查询批量更新mysql数据中所述。

或者,如果您控制数据库模式,则可以将API调用的结果插入批处理INSERT语句中,然后在需要查找特定值时INSERT 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM