To have an auto incrementing value, first assign a variable like so:
SELECT @i:=0;
This can now be incremented in the SELECT query like so:
SELECT *, @i:=@i+1 AS i FROM fruit ORDER BY name;
This will return:
+----------+--------+-----------+------+ | fruit_id | name | somevalue | i | +----------+--------+-----------+------+ | 4 | Apple | 0 | 1 | | 1 | Banana | 0 | 2 | | 3 | Cherry | 0 | 3 | | 2 | Orange | 0 | 4 | +----------+--------+-----------+------+
Notice that for each record, i is one greater than the previous record.
The next example updates the "somevalue" column with an incrementing value. Note that @i needs to be reset otherwise it will continue in this example with 5 being the next number.
SELECT @i:=0;
As with the SELECT query above, we'll update ordering by name:
UPDATE fruit SET somevalue = @i:=@i+1 ORDER BY name;
And the result from "SELECT * FROM fruit"
+----------+--------+-----------+ | fruit_id | name | somevalue | +----------+--------+-----------+ | 1 | Banana | 2 | | 2 | Orange | 4 | | 3 | Cherry | 3 | | 4 | Apple | 1 | +----------+--------+-----------+
or "SELECT * FROM fruit ORDER BY name"
+----------+--------+-----------+ | fruit_id | name | somevalue | +----------+--------+-----------+ | 4 | Apple | 1 | | 1 | Banana | 2 | | 3 | Cherry | 3 | | 2 | Orange | 4 | +----------+--------+-----------+