¿Cómo obtendría la enésima fila (es decir, la 5ª fila) del resultado de una consulta en SQL Server?¿Cómo obtengo la enésima fila en una tabla de SQL Server?
Respuesta
Tiene muchas opciones, basadas en this link. Todas estas técnicas se aplican a SQL 2000. La que he usado anteriormente es la opción n. ° 1, donde toma un subconjunto de 5 elementos ordenado de una manera y luego selecciona la fila "SUPERIOR" del subconjunto ordenado de otra manera. ¡Funciona genial!
SELECT TOP 1 FName
FROM
(
SELECT TOP 5 FName
FROM Names
ORDER BY FName
) sub
ORDER BY FName DESC
En SQL 2005 y hasta es más fácil - que tienen funciones de ordenación de filas como ROW_NUMBER() que hacer lo que necesita directamente.
ROW_NUMBER() está presente en SQL Server 2005 ... – AdaTheDev
Modificado, gracias! – mwigdahl
Tenga en cuenta que cuando utiliza este método y hay n <5 filas, obtendrá la enésima fila y no nada. Por ejemplo, si hay 4 filas en Names, esto devolverá la 4ª fila. Esto puede ser bueno o malo dependiendo de lo que esperas. –
SQL Server 2005 y versiones posteriores:
with Records AS(select row_number() over(order by datecreated) as 'row', *
from Table)
select * from records
where row=5
Puede cambiar el orden para determinar cómo ordenar los datos para obtener la quinta fila.
Probado en mi instalación local: Microsoft SQL Server 2005 - 9.00.4053.00 (X64) 26 de mayo de 2009 14:13:01 Copyright (c) 1988-2005 Microsoft Corporation Developer Edition (64 bits) en Windows NT 6.1 (Build 7600:)
A partir de 2005, la función ROW_NUMBER() está disponible.
SELECT * FROM
(
SELECT r.*, ROW_NUMBER() OVER (ORDER BY SomeField ASC) AS RowNum
) sorty
WHERE RowNum = 5
un poco más/diferente de lo que pidieron, pero aquí es un poco de materia: Digamos que usted tiene una necesidad de encontrar la enésima fila de una tabla, en una secuencia de fecha y hora específica e introduzca un valor entre en otra tabla si su identificador único no está ya en la otra tabla. Esto obtiene el valor de esas primeras tablas enésima fila. myuniquecol es un identificador/Col que identifica el grupo de filas que todos tienen el mismo valor en la primera tabla que tienen valores MyDateTime únicas
(SELECT TOP 1 mycol FROM
(SELECT TOP 5 * FROM mytable
WHERE mytable.myuniquecol NOT IN (select myuniquecol from myothertable)
AND mytable.myuniquecol = myuniquecol
ORDER BY myuniquecol asc, mydatetime desc
) AS me
ORDER BY myuniquecol desc, mydatetime asc
) AS mycolnew
Esto es útil para encontrar la enésima fila en una tabla, e insertarlo en como el n-ésimo col en otra mesa.
tabla1: myuniquecol, mycol, MyDateTime
tabla2: myuniquecol, mycol1, mycol2, mycol3 ...
debería funcionar en cualquier SQL :)
NOTA: mitabla tiene una columna llamada mycol
EDIT: sacó algunas cosas debido a la limitación de SQL Server en TOP
FYI, lo hizo de esta manera porque la pregunta era un tanto ambigua. –
Puede usar Common Table Expression (CTE) y Window Function, ROW_NUMBER() (compatibilidad de SQL 2005) para resolver su problema.
Supongamos que el nombre de la tabla es tableOne y tiene tres columnas (col1, col2, col3)
hacer que la definición completa, es necesario especificar el orden con respecto a la que desea que las filas numeradas . Los siguientes scripts deberían ayudarlo a obtener la enésima fila de la tabla.
--table definition
create table tableOne
(
col1 varchar(10)
,col2 varchar(10)
,col3 varchar(10)
)
go
-- sample data creation
insert into tableOne VALUES ('c11','c12','c13')
insert into tableOne VALUES ('c21','c22','c23')
insert into tableOne VALUES ('c31','c32','c33')
insert into tableOne VALUES ('c41','c42','c43')
insert into tableOne VALUES ('c51','c52','c53')
insert into tableOne VALUES ('c61','c62','c63')
go
-- obtaining nth row using CTE and Window Function
WITH NthRowCTE AS
(
SELECT
ROW_NUMBER() OVER (ORDER BY col1) AS RNum
, *
FROM tableOne
)
SELECT * FROM NthRowCTE WHERE RNum = 5
GO
CON CTE y función de ventana, usted tiene la flexibilidad completa a los datos de salida de la manera deseada.
Si está utilizando SQL Serever 2005 o superior, puede usar la funcionalidad CTE.
contrario, puede utilizar esta consulta sencilla
SELECT TOP 1 EmpID
FROM (SELECT TOP 5 EmpID FROM EmpMaster ORDER BY Salary) T
ORDER BY Emp DESC
SIMPLE
- volver primer registro
seleccionar * de títulos a en la que 1 = (select count (title_id) de los títulos b donde a.title_id> = b.title_id)
- volver segundo disco y así sucesivamente seleccionar * de títulos en un 2 = (select count (title_id) de títulos b donde a.title_id> = b.title_id)
- 1. LINQ to SQL cada enésima fila de la tabla
- 2. jquery - clon enésima fila de una tabla?
- 3. Javascript: desplácese hasta la enésima fila en una tabla?
- 4. Eliminando la enésima fila mysql
- 5. SQL máximo fila de una tabla
- 6. Obtener la fila enésima en PostgreSQL
- 7. restricción de fila única en SQL Server
- 8. Cómo copiar una fila de una tabla de SQL Server a otra
- 9. Cómo comparo 2 filas de la misma tabla (SQL Server)
- 10. Cómo agregar una fila para todas las filas en otra tabla en SQL Server
- 11. Cómo leer la última fila con SQL Server
- 12. SQL Server: Permisos en la tabla
- 13. ¿Omite la primera fila en SQL Server 2005?
- 14. Desplazamiento de fila en SQL Server
- 15. Tabla SQL con una sola fila?
- 16. En SQL, ¿cómo eliminar una fila de una tabla si no tiene una fila correspondiente en otra tabla?
- 17. Seleccione Inicio y la última fila de una tabla (SQL Server)
- 18. fila 'actual' a una función en SQL Server
- 19. Tabla "Herencia" en SQL Server
- 20. ¿Cómo detectar filas duplicadas en una tabla de SQL Server?
- 21. Cómo generar una secuencia de comandos de la tabla mediante la consulta SQL en SQL Server
- 22. ¿Cómo hacer una tabla de solo lectura en SQL Server?
- 23. Actualice la misma tabla en SQL Server
- 24. Agregando una nueva fila ¿Usando SQL Server Management Studio?
- 25. Eliminar fila si existe tabla SQL
- 26. Cómo reemplazar una cadena en un SQL Server Tabla Columna
- 27. ¿Cómo obtengo una tabla de contingencia?
- 28. Texto SQL antes de la enésima coincidencia?
- 29. Duplicación de una tabla utilizando Microsoft SQL Server Mangement
- 30. imprime cada enésima línea en una fila usando gawk
¿Quieres una consulta SQL que devuelve los valores en la columna definida como la quinta columna en esa tabla? De modo que si uno fuera a insertar otra columna como segunda columna, presione las columnas subsiguientes hacia abajo, entonces esta consulta que estamos discutiendo luego devolvería lo que anteriormente había sido la cuarta columna. –
Por favor, aclare su pregunta. ¿Estás buscando la quinta fila o la quinta columna? –
Como el título de la pregunta es "¿Cómo obtengo la enésima fila en una tabla de SQL Server?", Creo que está bastante claro que quiere la quinta fila, no la quinta. – mwigdahl