3

インターフェイスには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 コマンドのオフセット引数に相当すると予想されるものに二重の疑問符を付けました。もちろん、そのような引数は UPDATE には存在しません。

私の質問は、どのようにテーブルをトラバースし、個々の行を操作するのですか?

CONSTRAINT : テーブルには WHERE パラメータ ( などWHERE id=[any value]) を使用できる一意のキーはありません。

コメント: 4thDimension のベテラン ユーザーとして、私は当惑しています。4thDimension では、適切なコマンドを使用して (たとえば) 最初の行から最後の行までテーブルをループし、簡単なコマンドで任意の行への変更を記録できます。 . mySQL の初心者として、効率的な回避策があるに違いないとしか思えません。

4

1 に答える 1

1

カスタム変数を使用して、試みているように見えることを達成できます。

SET @seq := 0;
UPDATE voc SET id = @seq := @seq + 1;

(あなたのアプローチとは対照的に、事前に何も選択する必要はなく、個別のクエリで各行を更新する必要はありませんが、すべての行は単一で処理されることに注意してください; asUPDATEを実行する必要がありますSETからの別のクエリUPDATE)

于 2012-09-16T09:05:19.397 に答える