1

Lets say I have

+-------------+--------------+------+-----+---------+-------+
| 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    |       |
+-------------+--------------+------+-----+---------+-------+

The primary key was isbn (which I have now removed and I have added id (i will make primary soon) before I can do this i need to make sure that all id's are unique (so I want to update all values to increment starting at 1;

I have tried the following but it isn't working any suggestions?

SET @bookid = 1; UPDATE books SET `id` = @bookid + 1;
Lizard
  • 43,732
  • 39
  • 106
  • 167

2 Answers2

2

Use this:

ALTER TABLE books AUTO_INCREMENT=1;

or if you haven't already id column, also add it

ALTER TABLE books ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ADD INDEX (id);
Walls
  • 3,972
  • 6
  • 37
  • 52
  • Thanks! I ran ALTER TABLE books DROP `id`; ALTER TABLE books ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (id); – Lizard Jan 29 '13 at 20:03
0

i think you are looking for something like that

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

your query wll always give id = 2

echo_Me
  • 37,078
  • 5
  • 58
  • 78