2014-04-01 84 views
0

這是一個場景。說我有一個名爲「日誌」的表,它看起來如下:如何在mysql中插入其他列值時繼承列值?

id | timestamp | batchid  | data | 
==================================== 
1 | time1 | 1  | 1000 |  
2 | time2 | 1  | 1015 |  
3 | time3 | 1  | 1018 |  
4 | time4 | 1  | 1025 | 

。 依此類推...

id設置爲自動遞增。時間戳和數據通過標準的mysql插入查詢定期插入。 現在batchid可以由用戶指定。 現在我想要的是在定期插入其他列數據的同時傳送批量數據。如果用戶更改了batchid,我將使用mysql UPDATE查詢來更改其最後一行中的數據,因此它將從那時起繼續該批處理標識。

例如...

目前我的表看起來像

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 | 

隨身攜帶批量色譜柱。

任何想法?在創建一個mysql表或其他東西時,是否需要設置任何字段選項?

任何幫助將不勝感激。

+0

這應該讓過去的batchid ----選擇batchid FROM日誌 其中timestamp> =( SELECT DATE(MAX(時間戳)) FROM日誌 ); --- – Tasos

+0

我同意。甚至「SELECT batchid FROM log ORDER BY id DESC LIMIT 1;」會做。然後我可以在插入時使用批處理。但我想知道是否有辦法保留以前的價值?例如...自動遞增。你可以通過這個sorta查詢總是有最後的值,然後加1然後插入。任何幫助將不勝感激。 – dhruvvyas90

回答

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; 
+0

工程就像一個魅力! :) 非常感謝。 – dhruvvyas90

相關問題