5

MySQL データベースのフィールドに自動番号付けを提供したいですか?

これは

フィールド名、番号があります

名前番号
--------------------
あああ1
bbbb 2
cccc 3
dddd 4
ええええ5

次に、3番目のフィールド(つまり、cccc)を削除したいそのテーブルからすべての行を選択した場合、削除した後、次のような出力を取得したい

名前番号
-----------------------
あああ1
bbbb 2
dddd 3
ええええ4

誰でもそのためのより良い解決策を提供できますか?

4

4 に答える 4

3

最初に:なぜこれを行うのですか?あなたの数列は一般的に主キーのようです。つまり、その数自体には他の意味はありません。したがって、ギャップを気にする必要はなく、DBMS に処理させてください。

それでも番号を並べ替えたい場合は、次の方法でこれを行うことができます。

UPDATE t CROSS JOIN (SELECT @i:=0) AS init SET t.number=@i:=@i+1

-しかし、本当に、これについて考えてみてください-つまり、本当にそれを行う必要があるかどうか。

于 2013-10-28T12:53:02.597 に答える
1

選択中にその場でランキングを行うことができます

select name, 
       @rank := @rank + 1 as number
from your_table, (select @rank := 0) r
order by name

number次に、テーブルに列はまったく必要ありません。

于 2013-10-28T12:52:23.100 に答える
0

$NumberPosition=3 のように、コードに数値位置の変数があると仮定すると、

UPDATE table SET number=(number-1) WHERE number>$NumberPosition
于 2013-10-28T13:04:19.573 に答える
-1

必要な数の自動インクリメントを設定します

このリンクを確認してください

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

于 2013-10-28T12:52:19.477 に答える