2013-08-18 54 views
0

我試圖更新我的MySQL表中的時間值,並且在處理邏輯時遇到問題。更新每個第二行的時間值

我想讓它,所以它讀取:

ID Time 
1 17:00 
2 17:00 
3 17:08 
4 17:08 
5 17:16 
6 17:16 

等。

我可以通過在ID號上使用MOD來選擇每隔一行,但我無法爲該行指定正確的更新值。

UPDATE `table` 
set `Time` = DATE_ADD(Convert('17:00:00',TIME),INTERVAL (`ID`-2)*8 MINUTE) 
where `ID` mod 2 = 1 

如果您需要任何澄清請讓我知道,並提前感謝。

更新:我應該補充說,如果我有一個查詢,可以像上面的表更新,那麼這將是更好!

+0

你想更新每兩行還是每兩行?您的更新只會更新每第二行。在ID爲mod 2 = 1的select * from表中嘗試相同的條件。如果你可以使用使用存儲過程。在我的opionion更簡單,並可以打印調試信息。或者一個php/jsp腳本 – tgkprog

+0

'哪裏\'ID \'mod 2 = 1'可能不是一個好主意。我認爲你*不應該認爲這個ID是連續的。他們可能是「漏洞」,比如說因爲併發事務失敗。是否沒有其他專欄可以讓您區分「成對的」行? –

+0

它不會爲第2行工作,但後續行應該工作...(像第4行,第6行等) – sarwar026

回答

0

我想這是你想要什麼:

update tbl set `Time` = 
      ADDDATE('1970-01-01 17:00:00', INTERVAL 8*((`ID`-1) DIV 2) MINUTE); 

生產(爲表已經有行ID1〜6):

mysql> select * from tbl; 
+------+----------+ 
| ID | Time  | 
+------+----------+ 
| 1 | 17:00:00 | 
| 2 | 17:00:00 | 
| 3 | 17:08:00 | 
| 4 | 17:08:00 | 
| 5 | 17:16:00 | 
| 6 | 17:16:00 | 
+------+----------+ 
6 rows in set (0.00 sec) 
0

你的MOD是選擇削弱號碼不能配對數(每秒)

試試這個

 where `ID` mod 2 = 0 
相關問題