我正在为将数据POST到我的服务器的第三方服务构建端点。为了减少带宽,第三方只发送来自前一记录的字段的更改。如何在MySQL表中创建一个新记录作为前一个只有diff变化的副本?
所以,想象一下表看起来像这样,与第一个记录:
+----+------+------+-------+-------+-------+
| id | item | size | color | state | count |
+----+------+------+-------+-------+-------+
| 1 | 0001 | 500 | blue | on | 12 |
+----+------+------+-------+-------+-------+
可能被发送到我的下一个数据将只是item: 0001, color: green, count: 15
,我将不得不插入使表看起来记录像下面这样:
+----+------+------+-------+-------+-------+
| id | item | size | color | state | count |
+----+------+------+-------+-------+-------+
| 1 | 0001 | 500 | blue | on | 12 |
| 2 | 0001 | 500 | green | on | 15 |
+----+------+------+-------+-------+-------+
通知的size
和state
领域如何保持不变,但向下复制到下一行。 (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