【问题标题】:How to delete and insert serial-num in MYSQL and also reorder serial-num?如何在MYSQL中删除和插入序列号并重新排序序列号?
【发布时间】:2012-11-10 18:03:33
【问题描述】:
===============
| 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 |
    ===============

【问题讨论】:

    标签: php mysql oracle phpmyadmin mysqli


    【解决方案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' 设置为自增字段并让数据库处理它。你在乎你是否跳过数字吗?

    【讨论】:

    • 我的项目是一本书,id与页码有关,所以如果我想删除一个页面,我必须重新计算页面的数量以填补删除页面的空白
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    相关资源
    最近更新 更多