我需要按行号更新行(不是AI ID,因为某些行可能会被删除)。我怎样才能做到这一点? 我的意思是这样的:
UPDATE cars SET idx = value WHERE row_number = i
我会在' for'声明,我是我的陈述的整数。所以我会更新声明中的每一行。
抱歉我的英文不好,谢谢!
答案 0 :(得分: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:=@rownum + 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子句,每次都可能有不同的结果。
答案 1 :(得分:0)
我不知道这个关于mysql但你可以在php
中做到这一点$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);
}
}
这样可行,只需根据您的使用修改此代码