2013-08-28 2 views
1

행 번호를 업데이트해야합니다 (AI ID가 아니기 때문에 일부 행이 제거 될 수 있음). 어떻게해야합니까? 나는 이런 식으로 뭔가 의미 : 나는 '에 대한'문에서이 작업을 수행 할행 번호별 MySQL 업데이트

UPDATE cars SET idx = value WHERE row_number = i 

를하고 난 내 문장의 정수입니다. 그래서 저는 성명서의 모든 행을 업데이트 할 것입니다.

영어로 감사합니다. 감사합니다.

+0

어떤 스크립팅 언어를 사용하고 있습니까? , PHP? – bhawin

+0

음 ... 전 폰을 사용하고 있지만 PHP 솔루션도 도움이 될 수 있습니다 –

답변

2

여기에 순수 MySQL의 솔루션입니다 :

/*test data*/ 
create table foo (id int auto_increment primary key, a int); 
insert into foo (a) values (10), (11), (12); 

/*update statement*/ 
update foo 
set a = 5 
where id = (
    select id from (
     select id, @rownum:[email protected] + 1 as rownumber 
     from foo, (select @rownum:=0) vars order by id 
    ) sq where rownumber = 2 
); 

결과 :

| ID | A | 
-----|----|-- 
| 1 | 10 | 
| 2 | 5 | 
| 3 | 12 | 

질문이 있으시면 언제든지 문의하십시오.

또한 여기에 order by id에 유의하십시오. 데이터베이스에서 첫 번째 행이나 마지막 행이 없기 때문에 중요합니다. 이론적으로 order by 절이 없으면 매번 다른 결과가 발생할 수 있습니다.

working live here in an sqlfiddle도 볼 수 있습니다.

+0

@AdamSchauer bhawin의 해결책은 결정적이어서 오류가 발생하기 쉽지 않습니다. 제 솔루션을 고려하십시오. – fancyPants

+0

sqlfiddle 링크를 이용해 주셔서 감사합니다! 이제 어떻게 든 이해할 수 있습니다. Btw. '@'는 SQL에서 무엇을 의미합니까? 나는 전에 그것을 본 적이 없다. –

+0

사용자 정의 변수에 사용됩니다. 여기에 대한 자세한 내용은 http://dev.mysql.com/doc/refman/5.0/en/user-variables.html을 참조하십시오. – fancyPants

0

내가 MySQL의에 대해이 모르지만이 작동합니다

$row_number=? ;//the row no of mysql you want to change the id 
$id=? ;//the new id 
mysql_connect //do it yourself 
$query="select 8 from tablename"; //the query 
$result=mysql_query($qyery,$conn); 
$count=0; 
while($row=mysql_fetch_array($result)) // fetch each row one by one an put data in array $row 
{ 
    $count++;  //increment count means the no of rows are incermented 
    if($count==$rownumber) //the row where you want to edit the id 
    { 
     $query1="update tablename set id='".$id."' where id=".$row["id"]; //new query on that particular row 
     $result1=mysql_query($query1,$conn); 
    } 
} 

PHP는이 작업을 수행 할 수 있습니다, 당신의 사용에 따라이 코드를 수정

+0

많은 사람이 방금 코드를 작성했습니다. 문제가 해결되어 기쁘게 생각합니다. – bhawin