2014-10-28 47 views
0

我想用一個靜態的大小的表是這樣的:如何使用MySQL表中的UPDATE移動列數據?

+------+----------+-----------+ 
| id | col1  | col2  | 
+------+----------+-----------+ 
| 1 | a  | x   | 
+------+----------+-----------+ 
| 2 | b  | y   | 
+------+----------+-----------+ 
| 3 | c  | z   | 
+------+----------+-----------+ 

有沒有辦法來列數據上移,當我更新[3中,col1]例如?表應該是這樣的......

+------+----------+-----------+ 
| id | col1  | col2  | 
+------+----------+-----------+ 
| 1 | b  | x   | 
+------+----------+-----------+ 
| 2 | c  | y   | 
+------+----------+-----------+ 
| 3 | d*  | z   | 
+------+----------+-----------+ 

在*新值ROW3,COL1]和列數據已經上移;提前致謝。

回答

1

您可以用update/join做到這一點:

update table t left join 
     table tnext 
     on t.id = tnext.id - 1 
    set t.col1 = (case when tnext.id is null then 'd' else tnext.col1 end); 
+0

是偉大的工作;非常感謝。 – Data 2014-10-28 18:27:01

+0

我希望你不要認爲這是一個愚蠢的要求,但你會介意解釋這個聲明,所以我可以理解這個加入的東西,它讓我困惑,如果不是,不用擔心。 – Data 2014-10-28 18:38:42

+0

這不是解釋聯接如何工作的論壇。嘗試谷歌或閱讀數據庫文檔。 – 2014-10-29 01:49:39

相關問題