0
===============
| id   | name |
===============
|    1 | Ali  |
|    2 | ahmd |
|    3 | jada |
|    4 | nisr |
|    5 | sara |
|    6 | mona |
|    7 | dana |
===============

id = 5のような行を削除して、そのようにしたときにIDを並べ替えたい=>

===============
| id   | name |
===============
|    1 | Ali  |
|    2 | ahmd |
|    3 | jada |
|    4 | nisr |
|    5 | mona |
|    6 | dana |
===============

id = 2 name = yafaの行を挿入した場合も同じです。値を複製せずにテーブルを並べ替える方法と、そのようになります。

    | id   | name |
    ===============
    |    1 | Ali  |
    |    2 | yafa |
    |    3 | ahmd |
    |    4 | jada |
    |    5 | nisr |
    |    6 | sara |
    |    7 | mona |
    |    8 | dana |
    ===============
4

1 に答える 1

1

これは、追加または削除する「id」を常に知っていることを前提としています。(また、常に一度に 1 つの行だけで作業します)。

削除の場合:

DELETE FROM tableName WHERE id = 5;

UPDATE tableName 
SET    id = id-1
WHERE  id > 5;

インサートの場合:

UPDATE tableName 
SET    id = id + 1
WHERE  id >= 2;

INSERT INTO tableName (id, name) VALUES (2, 'yafa');

ところで、なぜあなたはこれをしたいのですか?列「id」を自動インクリメント フィールドに設定し、データベースに処理させます。数字を飛ばしてもかまいませんか?

于 2012-11-10T18:15:12.377 に答える