【问题标题】:How do I increase ID value for specific MySQL rows by 1?如何将特定 MySQL 行的 ID 值增加 1?
【发布时间】:2013-02-03 10:31:53
【问题描述】:

我在 MySQL 表中有一个列,该列在添加新行时输入自动增量 ID。 MySQL 表中的数据被拉入 HTML 表中,HTML 表中的行按 ID 列排序。通常这对我的目的来说很好,但我现在需要输入一个 ID 低于当前自动增量值的行,以便它显示在表格的更下方。

所以,我想知道是否有一种方法,使用 MySQL 语句将 1 添加到特定行范围的 ID 值,例如将 1 添加到第 800-850 行,这样它们现在将是 801-851,然后我可以手动插入一个 ID 值为 800 的新行。

【问题讨论】:

    标签: mysql auto-increment


    【解决方案1】:

    你需要让auto-incrementation单独工作,并在你的表中创建一个新字段table_id来设置你想要的id数字。

    重置表 id 绝不是一个好主意:例如,不要忘记链接到表 id 上的所有外键。

    要将 1 增加到您的特定 id 数字,它将是:

    UPDATE your_table SET table_id = table_id + 1 WHERE table_id BETWEEN 800 AND 850
    

    【讨论】:

    • 我尝试过这种方式,但出现如下错误:#1062 - Duplicate entry '501' for key 'PRIMARY'
    【解决方案2】:
    update [yourtablename] 
    set [youridfieldoftable]=[youridfieldoftable] + 1 
    where [youridfieldoftable] >= 800 
      and [youridfieldoftable] <= 850
    

    确保用正确的名称替换表和字段名称。该字段四次相同。

    【讨论】:

      【解决方案3】:

      为了避免错误

      键“PRIMARY”的重复条目 x

      在 sdespont 建议查询中添加 ORDER BY 子句

      UPDATE your_table SET table_id = table_id + 1 WHERE table_id BETWEEN 800 AND 850 ORDER BY table_id DESC
      

      【讨论】:

        猜你喜欢
        • 2016-09-09
        • 2017-08-05
        • 1970-01-01
        • 1970-01-01
        • 2011-02-19
        • 2017-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多