2016-11-22 80 views
0

說,我有一個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 - >更新數據庫 –

回答

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

的[鏈接] (http://stackoverflow.com/questions/11664684/how-to-bulk-update-mysql-data-with-one-query)你提供的是非常有幫助的。對我而言,最簡單的解決方案是用戶雅羅斯拉夫提到的「重複關鍵更新」。 – dean2020