更新没有唯一键的行

时间:2012-09-16 08:52:51

标签: php mysql

我使用mySQL(引擎:myISAM)和php作为界面。

我的目标:通过循环遍历表并递增其值分配给所述字段的变量来填充表格每行中的数字字段。

一段简单的代码如下所示:

$NumOfRows = mysqli_num_rows(mysqli_query ($connection, "SELECT * FROM voc"))

$Offset = 1;

While (($Offset-1) < $NumOfRows)
{

  mysqli_query($connexion, "UPDATE voc SET id=$Offset WHERE **??rownumber??**=$Offset LIMIT 1");

  $Offset = $Offset + 1;
}

我已经提出双重问号,可以期待mySQL SELECT命令的 offset 参数的对应部分。当然,UPDATE不存在这样的论点。

我的问题是:你如何遍历一个表并操纵各行?

CONSTRAINT :表中没有允许使用WHERE参数的唯一键(例如:WHERE id=[any value])。

评论:作为4thDimension的经验丰富的用户,我感到困惑:在4thDimension中,您可以通过适当的命令从第一行开始(例如)从第一行到最后一行的表循环,并记录对任何行的更改一个简单的命令。作为mySQL的新手,我只能怀疑必须有一些有效的解决方法。

1 个答案:

答案 0 :(得分:1)

您可以使用custom variables

来实现您的效果
SET @seq := 0;
UPDATE voc SET id = @seq := @seq + 1;

(请注意,与您的方法相比,您不需要提前选择任何内容,也不需要在单独的查询中更新每一行,但所有行都在一个{{1}中处理您需要从UPDATE

执行SET作为单独的查询