我需要处理一些在mysql表中的记录。问题是,可增量id并不是一种可靠的方法来知道下一个或上一个记录是什么,因为有些记录是被删除的。
我的表有三个字段
Id、数量、状态
.
我想一次读取一个数字,我不介意每次我想读取下一个或上一个时从数据库中取出它。一旦我得到这个数字,我想把它加倍,并把值写入列状态。
使用游标会很好,但游标不允许我更新我正在读取的底层表。是否有一个解决方案,可以让我读取下一个和前一个值,同时允许我更新当前行?
谢谢。
我不是说这是最好的方法,但可以这样做:
$rows=SELECT id FROM <table>;
foreach($rows as $row){
$prev=SELECT number FROM <table> WHERE id < $row ORDER BY id DESC LIMIT 1;
$next=SELECT number FROM <table> WHERE id > $row ORDER BY id ASC LIMIT 1;
if($prev && $next)
UPDATE <table> SET = 2($prev+$next) WHERE id=$row;
}
同样的事情也可以通过游标实现。