サーバーにデータをPOSTするサードパーティのサービスのエンドポイントを構築しています。帯域幅を削減するために、第三者は前のレコードのフィールドからの変更のみを送信します。MySQLテーブルの新しいレコードを作成する方法は、diffの変更のみの前のコピーとして?
ので、テーブルは非常に最初のレコードで、次のようになります想像:
+----+------+------+-------+-------+-------+
| id | item | size | color | state | count |
+----+------+------+-------+-------+-------+
| 1 | 0001 | 500 | blue | on | 12 |
+----+------+------+-------+-------+-------+
私に送られるかもしれない次のデータがちょうどitem: 0001, color: green, count: 15
だろうと私はテーブルのルックスので、レコードを挿入する必要がありますsize
とstate
フィールドは変更されませんが、次の行までコピーする方法を
+----+------+------+-------+-------+-------+
| id | item | size | color | state | count |
+----+------+------+-------+-------+-------+
| 1 | 0001 | 500 | blue | on | 12 |
| 2 | 0001 | 500 | green | on | 15 |
+----+------+------+-------+-------+-------+
お知らせ:次のように。 (id
は単なる自動インクリメントキーです)
さらに、これはitem
という識別子ごとに一意です。私はいくつかの異なるitem
表は次のようになります記録し得るのであれば:
+----+------+------+-------+-------+-------+
| id | item | size | color | state | count |
+----+------+------+-------+-------+-------+
| 1 | 0001 | 500 | blue | on | 12 |
| 2 | 0001 | 500 | green | on | 15 |
| 3 | 0002 | 700 | white | off | 42 |
| 4 | 0001 | 500 | red | off | 9 |
| 5 | 0003 | 300 | black | on | 66 |
+----+------+------+-------+-------+-------+
それから私は、このメッセージが表示されます。item: 0002, size: 100
表は次のようになります。
+----+------+------+-------+-------+-------+
| id | item | size | color | state | count |
+----+------+------+-------+-------+-------+
| 1 | 0001 | 500 | blue | on | 12 |
| 2 | 0001 | 500 | green | on | 15 |
| 3 | 0002 | 700 | white | off | 42 |
| 4 | 0001 | 500 | red | off | 9 |
| 5 | 0003 | 300 | black | on | 66 |
| 6 | 0002 | 100 | white | off | 42 |
+----+------+------+-------+-------+-------+
私にできる方法はありますこれはMySQLだけでですか?ストアドプロシージャまたは類似のもの?
私の一意の識別子は上記の例でわかるように 'item'列です。私は前の 'item'レコードの' id'を格納していません。私は 'items'テーブル(これは私が持っている)に追加することができますが、そのIDを調べる必要があるので、それを単一のクエリにする目的を破ることはありませんか? – Bing
@Bing各アイテムの最大IDレコードを探していますか? –
はい、一意の 'item'識別子ごとに最新のレコードを更新します。 – Bing