Limitar nº de rows en una sentencia

10/11/2003 - 11:27 por dukof | Informe spam
Buenas,

necesito limitar las lineas que devuelve una consulta, con
top consigo sacar las x primeras, pero...

puedo obtener un rango de lineas, es decir, de la 20 a la
40???

Creo que en MySQL es algo así como LIMIT.

Gracias.

God save the Queen.

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
10/11/2003 - 12:18 | Informe spam
Tendrás que crear tú ese procedimiento. SQL Server no posee esa
funcionalidad



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)
MVP SQL Server
Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"dukof" escribió en el mensaje
news:069601c3a775$4da643a0$
Buenas,

necesito limitar las lineas que devuelve una consulta, con
top consigo sacar las x primeras, pero...

puedo obtener un rango de lineas, es decir, de la 20 a la
40???

Creo que en MySQL es algo así como LIMIT.

Gracias.

God save the Queen.
Respuesta Responder a este mensaje
#2 Dukof
10/11/2003 - 12:21 | Informe spam
Gracias, me lo temia.

God save the Queen.
Respuesta Responder a este mensaje
#3 Javier Loria
10/11/2003 - 12:28 | Informe spam
Hola:
Para limitar en SQL 2000 la cantidad de filas existe el SET ROWCOUNT,
pero en la Documentacion en Linea esta esta desrecomendado su uso, y deben
ser reemplazadas las expresiones por TOP.
Para paginacion a mi me gusta utilizar el siguiente mecanismo:
/* Paginacion de Autores */
CREATE PROCEDURE Autores_Sel
@LastNombre varchar(40) = NULL OUTPUT
AS
SET NOCOUNT ON

SELECT TOP 5 WITH TIES *
FROM AUTHORS
WHERE CASE WHEN @LastNombre IS NULL THEN 1
WHEN @LastNombre<au_fname THEN 1
ELSE 0
END=1
ORDER BY AU_FNAME
SELECT @LastNombre=MAX(AU_FNAME)
FROM ( SELECT TOP 5 au_fname
FROM AUTHORS
WHERE CASE WHEN @LastNombre IS NULL THEN 1
WHEN @LastNombre<au_fname THEN 1
ELSE 0
END=1
ORDER BY AU_FNAME) AS N
GO
/* Fin de Declaracion de Procedimiento */

/* Uso de Procedimiento */
DECLARE @UltimoApellido varchar(40)

EXEC Autores_Sel @UltimoApellido OUTPUT
EXEC Autores_Sel @UltimoApellido OUTPUT
EXEC Autores_Sel @UltimoApellido OUTPUT
EXEC Autores_Sel @UltimoApellido OUTPUT
EXEC Autores_Sel @UltimoApellido OUTPUT
/* Fin de Procedimiento */

Esto te permitira en la aplicacion cliente pedir bloques de filas
"consecutivos", usando el filtro y la siguiente corrida obtiene los
siguientes.

Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

dukof escribio:
Buenas,

necesito limitar las lineas que devuelve una consulta, con
top consigo sacar las x primeras, pero...

puedo obtener un rango de lineas, es decir, de la 20 a la
40???

Creo que en MySQL es algo así como LIMIT.

Gracias.

God save the Queen.
Respuesta Responder a este mensaje
#4 Manuel \(Salamanca\)
10/11/2003 - 13:21 | Informe spam
Hola,
haber si te sirve este ejemplo: con esto te sacaría 10 registros empezando
en el registro 500. Hay que tener en cuenta un sistema de ordenación para
ambas selects, y una clave primaria que en este ejemplo sería Id. Los
numeros de los top podrían ser variables pasadas en un procedimiento
almacenado y construri una sentecia dinamica.


SELECT TOP 10 'Los campos que necesites'
FROM Tabla
WHERE Id NOT IN (Select Top 500 Id From Tabla ORDER BY Campo)
ORDER BY Campo

Espero que te sirva,
Un saludo

"dukof" escribió en el mensaje
news:069601c3a775$4da643a0$
Buenas,

necesito limitar las lineas que devuelve una consulta, con
top consigo sacar las x primeras, pero...

puedo obtener un rango de lineas, es decir, de la 20 a la
40???

Creo que en MySQL es algo así como LIMIT.

Gracias.

God save the Queen.
Respuesta Responder a este mensaje
#5 Miguel Egea
10/11/2003 - 13:46 | Informe spam
quiza rowcount sirva para eso, muestra la sintaxis de misql y vemos si hay
equivalente.

Saludos
miguel Egea
"Dukof" escribió en el mensaje
news:06f401c3a77c$c8bba5b0$
Gracias, me lo temia.

God save the Queen.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida