Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

LIMIT con SQL Server

Estas en el tema de LIMIT con SQL Server en el foro de Bases de Datos General en Foros del Web. No puedo creer que no exista el LIMIT N, N en SQL server 2005 Express... Esto me impide hacer un millon de cosas.... Cual seria ...
  #1 (permalink)  
Antiguo 08/05/2008, 06:32
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 9 meses
Puntos: 2
Exclamación LIMIT con SQL Server

No puedo creer que no exista el LIMIT N, N en SQL server 2005 Express...

Esto me impide hacer un millon de cosas....

Cual seria la solucion para crear un LIMIT N, N en SQL server.......

Vi consultas con TOP N, pero trae de 0 hasta N, despues vi hacer subconsultas super complicadas que no las entiendo...

Una Ayudita con esto, necesito Horientacion....

Gracias
  #2 (permalink)  
Antiguo 08/05/2008, 09:49
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Re: LIMIT con SQL Server

No se si hay otras soluciones pero esta no parece complicada.

Si partimos de que simpre tenemos que usar algun campo de ordenación puesto que en las bases de datos relacionales el orden de insercion de los registros no debe importar, por eso hay que escoger siempre un criterio de ordenación.

Código:
select top M * from 
          (select top N+M ColumnA, ColumnB ... from tablaX order by fld) a 
order by fld desc 
En la subconsulta selecionamos los N+M registros ordenados ascendentemente por "fld", en la principal seleccionamos de los anteriores los M primeros pero ordenados descendentemente por "fld", con lo que conseguimos lo mismo que si usaras LIMIT N, M.

Con numeros

Código:
Select top 5 * from
    (select top 20 ColumnA, ColumnB ... from tablaX order by fld)
order by fld desc;
Esto te da lo mismo que LIMIT 16, 20 bueno del 16 al 20

Un engorro pero no todo es ANSI SQL.


Quim

Última edición por quimfv; 08/05/2008 a las 09:56
  #3 (permalink)  
Antiguo 08/05/2008, 09:49
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 11 meses
Puntos: 7
Re: LIMIT con SQL Server

Busca información sobre las funciones de Ranking, perticularmente la función ROW_NUMBER(). No es tan directo como LIMIT, pero la función está especificada en el estándar SQL2003.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:23.