【问题标题】:select with limit and update table. Limit not working fine. sql选择限制和更新表。限制不能正常工作。 sql
【发布时间】:2012-01-16 19:35:19
【问题描述】:

我正在尝试使用限制选择更新 thable
当我们在像(limit 50)这样的选择查询中只输入一个参数“限制”时,更新表很好

But when select with "limit" like (limit $sqlFrom, $sqlTo) it updates the table but skip 2nd (51 to 100) records and again start updating from 101.

每 2 50 条记录跳过一次

问题出在哪里???

这里是代码

$sqlFrom  = 0;
$sqlTo    = 50;

for($try = 0; $try < 6; $try++) 
{   

 $res = mysql_query("select * from table_name where underprocess = 0 limit " . $sqlFrom . "," . $sqlTo);

 while($row = mysql_fetch_array($res))
 {
     $id = $row['id'];

    mysql_query("update table_name set underprocess = 1 where id = " . $id) or die('error');
    echo $id;

 }


print '<hr/>';
if($sqlFrom != 0)
{
    $sqlFrom += $sqlTo;
}
else
{
    $sqlFrom = $sqlTo;
}
}//for

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    这和预期的一样

    当您根据第一次迭代更新第 1-50 行时,您设置了 underprocess = 1。这些在第二次调用中被忽略,因为要求行underprocess = 0

    因此,如果您愿意,第一个查询中的第 51-100 行现在是您的第二个查询的第 1-50 行。

    您不需要更改 LIMIT 范围,因为您总是想要“第一个”50。

    注意

    由于您没有 ORDER BY,因此无法保证您的 LIMIT。

    【讨论】:

    • 谢谢亲爱的,我明白逻辑了
    猜你喜欢
    • 2014-04-23
    • 2021-02-04
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多