如何在mysql中插入其他列值时继承列值?

时间:2014-04-01 08:37:49

标签: mysql sql

这是一个场景。假设我有一个名为“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表时是否需要设置任何字段选项?

任何帮助将不胜感激。

1 个答案:

答案 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;