Autoincrementar un valor al vuelo con MySql

Asignar un valor a una variable en mysql e incrementarla por cada fila que recorre una SELECT o una UPDATE permite crear un contador sin recurrir a lenguajes de programación externos.

Tabla de ejemplo

+----------+--------+-----------+
| fruit_id | name   | somevalue |
+----------+--------+-----------+
|        1 | Banana |         0 |
|        2 | Orange |         0 |
|        3 | Cherry |         0 |
|        4 | Apple  |         0 |
+----------+--------+-----------+

SELECT con valor auto increment

Definir una variable en mysql sigue la siguiente sintaxis: SELECT @i:=0, ejemplo completo:

SELECT *, @i:=@i+1 AS i FROM fruit ORDER BY name;

Y el resultado sería:

+----------+--------+-----------+------+
| fruit_id | name   | somevalue | i    |
+----------+--------+-----------+------+
|        4 | Apple  |         0 |    1 |
|        1 | Banana |         0 |    2 |
|        3 | Cherry |         0 |    3 |
|        2 | Orange |         0 |    4 |
+----------+--------+-----------+------+

UPDATE con auto increment

Igualmente, es posible declarar variable y usarlas para asignar valores a una tabla sql. El siguiente ejemplo actualiza los valores del campo somevalue ordenado por el campo name

UPDATE fruit SET somevalue = @i:=@i+1 ORDER BY name;

Una vez ejecutada la sentencia nuestra tabla contendría los siguientes valores:

+----------+--------+-----------+
| fruit_id | name   | somevalue |
+----------+--------+-----------+
|        1 | Banana |         2 |
|        2 | Orange |         4 |
|        3 | Cherry |         3 |
|        4 | Apple  |         1 |
+----------+--------+-----------+

Vía electrictoolbox

Compartir:
  • Facebook
  • Twitter
  • Meneame
  • Google Bookmarks
  • del.icio.us
  • BarraPunto
  • Bitacoras.com
  • Netvibes
  • MySpace
  • Technorati
  • email
  • PDF

Posts relacionados:

  1. Contenido relacionado con mysql
  2. Cambiar password de root en MySQL
  3. Usando + para unir arrays en PHP
  4. Cuidado con parseInt en javascript

Deja un comentario

You must be logged in to post a comment.