La pseudocolumna ROWNUM sirve, en Oracle, fundamentalmente para dos cosas:
- Numerar por órden de visualización los registros recuperados por una consulta.
- Limitar el número de registros devueltos por una consulta
Para realizar lo segundo en MySQL, la cláusula LIMIT es mucho más simple y efectiva que el método para limitar con ROWNUM en Oracle, sin embargo lo primero, es decir, mostrar un contador de registros en MySQL no tiene un equivalente directo, aún así, se puede emular de la siguiente forma:
Pongamos la siguiente consulta, que devuelve los registros de una tabla de ejemplo:
mysql> SELECT * FROM frutas;
+-----------+----------+
| nombre | color |
+-----------+----------+
| fresa | rojo |
| platano | amarillo |
| manzana | verde |
| uva | verde |
| pera | verde |
| mandarina | naranja |
| melocoton | marron |
| limon | amarillo |
+-----------+----------+
8 rows in set (0,00 sec)
Utilizando variables podemos conseguir mostrar el número de fila en MySQL:
SELECT @rownum:=@rownum+1 AS rownum, frutas.*
FROM (SELECT @rownum:=0) r, frutas;
mysql> SELECT @rownum:=@rownum+1 AS rownum, frutas.*
-> FROM (SELECT @rownum:=0) r, frutas;
+--------+-----------+----------+
| rownum | nombre | color |
+--------+-----------+----------+
| 1 | fresa | rojo |
| 2 | platano | amarillo |
| 3 | manzana | verde |
| 4 | uva | verde |
| 5 | pera | verde |
| 6 | mandarina | naranja |
| 7 | melocoton | marron |
| 8 | limon | amarillo |
+--------+-----------+----------+
8 rows in set (0,00 sec)
Desgraciadamente no es posible usar variables dentro del código de las vistas, por lo que si intentamos crear una vista con el código anterior, nos devolverá un error:
mysql> CREATE VIEW vw_frutas AS SELECT @rownum:=@rownum+1 AS rownum, frutas.*
-> FROM (SELECT @rownum:=0) r, frutas;
ERROR 1351 (HY000): View's SELECT contains a variable or parameter
Gracias a Albert por la idea del post ;-)
esto es lo que iba entre las comillas del comentario anterior..."Desgraciadamente no es posible usar variables dentro del código de las vistas"
maldito error #1351!!!
Seguramente con procedimientos almacenados podrías resolverlo: http://dev.mysql.com/doc/refman/5.0/es/stored-procedures.html
Por ejemplo, creando un procedimiento o una función que haga la SELECT que tu quieras, y acepte como argumento el valor del where, devolviendo los datos que necesitas.
Enviar un comentario nuevo
nube de tags
qué se comenta
- Gracias, a nosotros también por RusitetA (4julio2009)
- Seguramente con por pedro (3julio2009)
- esto es lo que iba entre las por michelangelo (3julio2009)
- buenas!!! o no por michelangelo (3julio2009)
- Creo que se te ha ido la mano por pedro (2julio2009)
- Sería bueno que agregaras por makuaka (2julio2009)
- hi por makuaka (2julio2009)
desde twitter
de Poker
vienen de fuera
- desde Próxima Drupalada el 10 de Junio | Blog de Carlos Rincón (3junio2009)
- desde Nueva etapa en Neurotic | Jordi Bufí (1junio2009)
- desde Sant Jordi, día del libro en Cataluña, listado completo de a (22abril2009)
- desde Conclusiones de la segunda Drupalada | Blog de Carlos Rincón (2abril2009)
- desde Atenea tech - Blog » Blog Archive » Segu (1abril2009)





buenas!!! o no tanto...:(
"<>" que es exactamente lo que estoy qeriendo hacer...:(
No habra alguna otra forma?