【问题标题】:Increment all values in mysql table增加mysql表中的所有值
【发布时间】:2013-01-13 12:04:11
【问题描述】:

假设我有

+-------------+--------------+------+-----+---------+-------+
| Field       | Type         | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| id          | int(11)      | YES  | UNI | NULL    |       |
| isbn        | varchar(20)  | NO   |     | NULL    |       |
| title       | varchar(200) | YES  |     | NULL    |       |
| author      | varchar(200) | YES  |     | NULL    |       |
+-------------+--------------+------+-----+---------+-------+

主键是 isbn(我现在已经删除了它,并且我已经添加了 id(我将很快成为主键)在我可以这样做之前我需要确保所有 id 都是唯一的(所以我想将所有值更新为从 1 开始递增;

我尝试了以下方法,但没有任何建议?

SET @bookid = 1; UPDATE books SET `id` = @bookid + 1;

【问题讨论】:

  • 我认为创建一个新的 auto-inc 表和INSERT ... SELECT 会更容易

标签: mysql increment auto-increment


【解决方案1】:

使用这个:

ALTER TABLE books AUTO_INCREMENT=1;

或者如果你还没有 id 列,也添加它

ALTER TABLE books ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ADD INDEX (id);

【讨论】:

  • 谢谢!我跑了 ALTER TABLE books DROP id; ALTER TABLE books ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,ADD PRIMARY KEY (id);
【解决方案2】:

我认为您正在寻找类似的东西

   SET @bookid = 1; 
   UPDATE books SET `id` =`id`+ @bookid ;

您的查询将始终给出 id = 2

【讨论】:

    猜你喜欢
    • 2020-02-03
    • 2019-12-28
    • 2013-06-05
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    相关资源
    最近更新 更多