Obtener una columna con el número de fila en MySQL
Autor: Luciano | Categoría: Bases de Datos, MySQL
Más de una vez tuve la necesidad de en una consulta enumerar las filas de la misma, por medio de una columna calculada auto incremental ¿se entiende cual era me requerimiento?
Explicándolo de nuevo, mi necesidad era de contar con una nueva columna que sea un número auto incremental y que represente el número de fila. Según el artículo original esto se puede hacer en Oracle a través de la variable rownum (no doy fe de ello pues no conozco).
Bien, en esta publicación disponemos de la solución.
Veamos un ejemplo: tengo la siguiente tabla con nombres de ciudades ordenadas alfabéticamente:
mysql> SELECT id,name FROM City ORDER BY name ASC LIMIT 15;
+------+----------------------+
| id | name |
+------+----------------------+
| 670 | A Coruña (La Coruña) |
| 3097 | Aachen |
| 3318 | Aalborg |
| 2760 | Aba |
| 1404 | Abadan |
| 395 | Abaetetuba |
| 3683 | Abakan |
| 1849 | Abbotsford |
| 2747 | Abeokuta |
| 478 | Aberdeen |
| 3191 | Abha |
| 2812 | Abidjan |
| 1703 | Abiko |
| 3989 | Abilene |
| 1309 | Abohar |
+------+----------------------+
15 rows in set (0.00 sec)
El código a continuación utiliza una variable @rownum que inicializa como argumento del FROM y se evita de declarar la variable previamente con SET @rownum: = 0;
El resultado es el que veremos abajo, sencillo y sorprendente:
mysql> SELECT @rownum:=@rownum+1 'row number',name
FROM City C , (SELECT @rownum:=0) R
ORDER BY name ASC LIMIT 15;
+------------+----------------------+
| row number | name |
+------------+----------------------+
| 1 | A Coruña (La Coruña) |
| 2 | Aachen |
| 3 | Aalborg |
| 4 | Aba |
| 5 | Abadan |
| 6 | Abaetetuba |
| 7 | Abakan |
| 8 | Abbotsford |
| 9 | Abeokuta |
| 10 | Aberdeen |
| 11 | Abha |
| 12 | Abidjan |
| 13 | Abiko |
| 14 | Abilene |
| 15 | Abohar |
+------------+----------------------+
15 rows in set (0.01 sec)
Vía: The road to using MySQL
Una respuesta para "Obtener una columna con el número de fila en MySQL"
Lucian, buenas tardes…
Muy bueno estaba buscando solucionar ese problema desde el server MySQL y no desde el cliente, y has dado en el clavo tio…., sencillo simple y practico, esto luego lo creo en una view y problema solucionado, yo habia llegado solo hasta usar el SET, pero no pense ni imagine meterlo en el FROM, simplemente…
Gracias por tu aporte
Comentarios: