2

4 つの列を持つテーブルがあり、そのうちの 1 つは「順序」と呼ばれます。「Order」は自動インクリメントされませんが、別の列「mapping_id」は自動インクリメントされます。他の列には、「quiz_id」と「question_id」が含まれます。

テーブル構造イメージ

"order" のすべての値を、question_id フィールドと同じ昇順になるように変更したいと考えています。私のアプリケーションは、この「順序」列に基づいてのみソートするため、再ソートできる唯一の方法は、この列の値を編集することです。

私が知りたいのは、更新クエリを記述して、「順序」のすべての値を昇順の番号順に変更する方法です。「order」の値を「question_id」の値と一致させることだけを考えましたが、question_id は 1 ではなく 2 から始まり、「order」は 1 から始める必要があります。

4

2 に答える 2

5

次のようなものは、あなたが探していることをするかもしれません。順序にorder基づいて増分値を割り当てます。question_id

select @ordval := 0;
update thetable set `order` = 
        (select @ordval := @ordval + 1) order by question_id;
于 2013-10-18T22:06:22.190 に答える
1

order = question_id -1 を設定できます。このようにすると、1 から始まります。question_id に穴がある場合は、どちらの方法でもいくつかの穴が開く可能性がありますが、穴がない場合は、これでうまくいきます。

UPDATE yourTable
SET `order` = question_id - 1
于 2013-10-18T21:58:25.713 に答える