2016-11-22 6 views
0

私は4列のテーブルを持っています。最初の2列はフィードから供給されます。 APIリクエストからの結果を使用して更新する必要がある列value1とvalue2。したがって、この例では、私はこれらの3つのレコードを更新したいと思いますMySQLの複数の行を更新してAPIの結果を返します

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

、しかし:APIリクエストから値が例えばvalue1とvalue2の

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

に行くべきAPIリクエストは私にこれらの値を与えます私の場合は、一度に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 |  |   | 
+---------+------+--------+----------+ 

1つまたは複数のクエリを使用して2000レコードを更新するにはどうすればよいですか?私は一時的なテーブルを使用する必要がありますか、またはなしで行う方法がありますか?

+0

は、私はあなたがデータベース –

答えて

0

How to bulk update mysql data with one query?に記載されているように、CASEを使用して一種のバッチ更新を実装できます。

また、データベーススキーマを制御する場合は、API呼び出しの結果をバッチ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呼び出しから取得された場合。あなたは、インスタンスのためにprod_id 1108のすべての値が必要な場合は

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

後で、彼らは単純なテーブル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

[リンク]を更新>>ない直接PHP、C#、Java(登録商標)、C++などのクエリデータベース - のようなMySQLの、からの仲介言語を使用するAPI-を照会することを余儀なくされていると思います(http://stackoverflow.com/questions/11664684/how-to-bulk-update-mysql-data-with-one-query)あなたが提供してくれたことはとても役に立ちました。私の目的のために、最も簡単な解決策はユーザーYaroslavによって言及された "重複したキー更新"でした。 – dean2020

関連する問題