Question: I have a table of 5700 records. The primary key is an integer. Now I noticed that some values are missing. Like this:

```
100 data
101 data 
102 data
104 data

```

`103` is missing. How I can update all the rows so that the order becomes correct (`104` becomes `103` in my example) in one SQL command?

Answer: 
Try this:

```
SET @var:=0;
UPDATE `table` SET `id`=(@var:=@var+1);
ALTER TABLE `table` AUTO_INCREMENT=1; 

```
Not sure about one command, but you can do it in four commands:

```
CREATE TABLE `temp` SELECT * FROM `orig_tbl`;
TRUNCATE `orig_tbl`;
-- counter doesn't reset in some old versions
ALTER TABLE `orig_tbl` AUTO_INCREMENT = 1; 
-- now we omit primary key column to let it seal the holes
INSERT INTO `orig_tbl` (`col1`, `col2`) SELECT `col1`, `col2` FROM `temp`;

```

Unless you're doing this to make it easier to select records randomly, you really should rethink your approach.