这是一个场景。假设我有一个名为“log”的表,它看起来如下:
id | timestamp | batchid | data |
====================================
1 | time1 | 1 | 1000 |
2 | time2 | 1 | 1015 |
3 | time3 | 1 | 1018 |
4 | time4 | 1 | 1025 |
。 等等...
id设置为自动递增。通过标准的mysql插入查询定期插入时间戳和数据。 现在,batchid可以由用户指定。 现在我想要的是在定期插入其他列数据时继承batchid数据。如果用户更改了batchid,我将使用mysql UPDATE查询来更改其最后一行中的数据,因此它将从那时起继承该批处理ID。
例如......
目前我的表格似乎是
id | timestamp | batchid | data |
====================================
1 | time1 | 1 | 1000 |
2 | time2 | 1 | 1015 |
3 | time3 | 1 | 1018 |
4 | time4 | 1 | 1025 |
现在用户事件更改批次ID = 3,因此它看起来像......
id | timestamp | batchid | data |
====================================
1 | time1 | 1 | 1000 |
2 | time2 | 1 | 1015 |
3 | time3 | 1 | 1018 |
4 | time4 | 3 | 1025 |
然后定期插入一直跟随......
id | timestamp | batchid | data |
====================================
1 | time1 | 1 | 1000 |
2 | time2 | 1 | 1015 |
3 | time3 | 1 | 1018 |
4 | time4 | 3 | 1025 |
5 | time5 | 3 | 1026 |
6 | time6 | 3 | 1028 |
随身携带batchid列。
有什么想法吗?创建mysql表时是否需要设置任何字段选项?
任何帮助将不胜感激。
答案 0 :(得分:1)
INSERT INTO my_table
SELECT NULL
, 'time5'
, x.batchid
, 1026 FROM my_table x
LEFT
JOIN my_table y
ON y.id > x.id -- or y.timestamp > x.timestamp if that's more appropriate
WHERE y.id IS NULL;