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”。(此外,您总是一次只使用一行)。

对于删除:

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 回答