2016-06-17 2 views
0

나는 테이블과 같이이 : 지금은 복사하기 위해 노력하고있어행의 값을 이전 행에 설정하는 방법은 무엇입니까?

// numbers 
+----+--------+ 
| id | numb | 
+----+--------+ 
| 1 | zero | 
| 2 | one | 
| 3 | two | 
| 4 | three | 
| 5 | four | 
| 6 | five | 
| 7 | six | 
| 8 | seven | 
| 9 | eight | 
| 0 | nine | 
+----+--------+ 

/상단 컬럼에 각 행 (단지 numb 열)의 값을 붙여 넣습니다. 결과는 다음과 같습니다.

+----+--------+ 
| id | numb | 
+----+--------+ 
| 1 | one | 
| 2 | two | 
| 3 | three | 
| 4 | four | 
| 5 | five | 
| 6 | six | 
| 7 | seven | 
| 8 | eight | 
| 9 | nine | 
| 0 | zero | 
+----+--------+ 

사실 저는 PHP로 그 작업을 수행 할 수 있습니다. 모든 행을 가져 와서 하나의 itam을 이동 한 다음 업데이트 할 수 있습니다. 하지만 순수 mysql로 ​​그렇게 할 수 있는지 알고 싶습니다.

+1

'0' 상단 –

+1

에 있어야합니다 그리고 무슨 일이 마지막 값이됩니다? 'id'는'9'로? – vaso123

+0

@lolka_bolka 무엇? 'id = 9'의 값은'nine'이어야합니다. – stack

답변

2

최대 ID를 제외한 모든 행이 업데이트됩니다. 최대 ID는 여전히 같은 감각을 갖습니다. (이 경우 9,'eight'에)

update tablename t1 
JOIN tablename t2 on t1.id = t2.id-1 
set t1.numb = t2.numb; 

Sample Fiddle

관련 문제