MySQL, ID de posición en SELECT

Muchas veces cuando hacemos una consulta SQL nos interesaría poder tener un ID al lado para poder posicionarnos o referirnos a una línea del resultado. Dicho de otra forma, tener un campo autoincremental que dependiese de la consulta y no de la propia tabla. Gracias a ese campo nos podríamos referir a los datos de la fila 4 y sería más rápido para todos poder referenciarlos.
mysql> SELECT alias,name FROM users;
+----------+---------+
| alias    | name    |
+----------+---------+
| Admin    | Zabbix  |
| guest    | Default |
| javier   | Javier  |
| adm      | Adm     |
| alberto  | Alberto |
+----------+---------+
Existe un pequeño truco en MySQL que nos permite hacer una consulta de ese tipo y obtener la fila extra que realmente interesa. A continuación lo vemos.
mysql> SET @num=0;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @num:=@num+1 AS pos,alias,name from users;
+-----+----------+---------+
| pos | alias    | name    |
+-----+----------+---------+
|   1 | Admin    | Zabbix  |
|   2 | guest    | Default |
|   3 | javier   | Javier  |
|   4 | adm      | Adm     |
|   5 | alberto  | Alberto |
+-----+----------+---------+
Como bien podéis observar lo que hacemos es crear en tiempo de ejecución una variable, num, inicializada a  cero (o al valor que deseemos) y que luego la colocamos en el SELECT, incrementando el valor de ésta en cada iteración resultante. Así de forma muy sencilla tenemos el ID que estábamos buscando y que nos indica la posición de cada una de las filas.


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios