2012-02-05 17 views
21

Estoy haciendo algunas llamadas, y tengo que hacer algunas consultas y obtener el resultado del formateo definido. por ejemplo: Tengo que conseguir todos los "top" en filas 20n gama < x < 40n etc.seleccione las filas TOP N de una tabla

SELECT * FROM Reflow 
WHERE ReflowProcessID = somenumber 
ORDER BY ID DESC; 

y ahora tengo que hacer mi deslizamiento por la columna denominada ID.

¿Alguna sugerencia de cómo hacerlo? Necesito ejecutar mi consulta en mysql, mssql y oracle.

+2

Consulte la cláusula 'LIMIT' http://dev.mysql.com/doc/refman/5.1/en/select.html –

+0

¿Por qué el voto a favor? ¿Por qué no poner tu comentario en una respuesta? Muchas preguntas. – Matthias

+1

Estoy bastante seguro de que no obtendrás nada que funcione en todos 3. Tendrás que usar 'rownum' en Oracle. – Ben

Respuesta

36

Suponiendo que el tamaño de página es de 20 registros, y que desea obtener la página número 2, aquí es cómo lo haría:

SQL Server, Oracle:

SELECT * -- <-- pick any columns here from your table, if you wanna exclude the RowNumber 
FROM (SELECT ROW_NUMBER OVER(ORDER BY ID DESC) RowNumber, * 
     FROM Reflow 
     WHERE ReflowProcessID = somenumber) t 
WHERE RowNumber >= 20 AND RowNumber <= 40  

MySQL:

SELECT * 
FROM Reflow 
WHERE ReflowProcessID = somenumber 
ORDER BY ID DESC 
LIMIT 20 OFFSET 20 
15

En MySQL, puede obtener 10 filas a partir de la fila 20 usando:

SELECT * FROM Reflow 
WHERE ReflowProcessID = somenumber 
ORDER BY ID DESC 
LIMIT 10 OFFSET 20 --Equivalent to LIMIT 20, 10 
Cuestiones relacionadas