MySQL UPDATE多行包含API的结果

时间:2016-11-22 23:00:20

标签: mysql sql

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

Navigator.SceneConfigs

例如,API请求为我提供了以下值:

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

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

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

如何只使用一个或少数几个查询来更新2000条记录?我需要使用临时表还是有办法没有?

1 个答案:

答案 0 :(得分:0)

您可以按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