Quiero seleccionar los últimos 5 registros de una tabla en SQL Server sin organizar la tabla en orden ascendente o descendente.¿Cómo selecciono las últimas 5 filas en una tabla sin ordenar?
Respuesta
Sin orden, esto es imposible. ¿Qué define el "fondo"? Lo siguiente seleccionará 5 filas de acuerdo a cómo se almacenan en la base de datos.
SELECT TOP 5 * FROM [TableName]
Derecha, también puede agregar un "pedido por colx desc" a la parte inferior 5, según los índices. es decir. los 5 primeros * SON * los de abajo 5 si invierte el orden. –
Esto no es correcto. Esta consulta seleccionará 5 filas ** pero no (siempre) ** según cómo estén almacenadas en la base de datos.Si –
Puede recuperar de la memoria.
Primero, obtiene las filas en un DataSet y luego saca las últimas 5 del DataSet.
Esto es sólo acerca de la consulta más extraña que he escrito, pero estoy bastante seguro de que obtiene las filas "el pasado 5" de una mesa sin necesidad de ordenar:
select *
from issues
where issueid not in (
select top (
(select count(*) from issues) - 5
) issueid
from issues
)
Tenga en cuenta que esto hace que su uso de la capacidad de SQL Server 2005 para pasar un valor a la cláusula "superior" - no funciona en SQL Server 2000.
por último, que quiere decir en el orden de la clave agrupada, entonces estoy afarid que no funciona –
He probado esto en una tabla que no tiene un índice agrupado, y volvió los últimos cinco filas que consigo al hacer un simple "seleccionar * de problemas". –
Y acaba de probarlo en una tabla con una clave primaria "identity int", y funcionó allí también. Tengo las "últimas cinco" filas. –
Bueno, las "últimas cinco filas" son en realidad las últimas cinco filas, según su índice agrupado. Su índice agrupado, por definición, es la forma en que las filas están ordenadas. Entonces realmente no puedes obtener las "últimas cinco filas" sin algún orden. Sin embargo, puede obtener las últimas cinco filas en lo que respecta al índice agrupado.
SELECT TOP 5 * FROM MyTable
ORDER BY MyCLusteredIndexColumn1, MyCLusteredIndexColumnq, ..., MyCLusteredIndexColumnN DESC
Hay un truco muy útil que funciona en algunas bases de datos para pedir el fin de bases de datos,
SELECT * FROM TableName ORDER BY cierto
Al parecer, esto puede funcionar en conjunción con cualquiera de los otros sugerencias publicadas aquí para dejar los resultados en el orden "orden en que salieron de la base de datos", que en algunas bases de datos es el orden en el que se modificaron por última vez.
La forma en que se formula su pregunta lo hace parecer que usted piensa tener a phys resort recurrir a los datos en la tabla para recuperarlos en el orden que desee. Si es así, este no es el caso, la cláusula ORDER BY existe para este propósito. El orden físico en el que se almacenan los registros permanece sin cambios cuando se usa ORDER BY. Los registros se ordenan en la memoria (o en el espacio temporal en disco) antes de que se devuelvan.
Tenga en cuenta que el orden en que se devuelven los registros no está garantizado sin utilizar una cláusula ORDER BY. Entonces, si bien algunas de las sugerencias aquí pueden funcionar, no hay ninguna razón para pensar que continuarán funcionando, ni puede probar que funcionan en todos los casos con su base de datos actual. Esto es por diseño, supongo que es para dar libertad al motor de la base de datos con los registros para obtener el mejor rendimiento en el caso de que no se especifique una orden explícita.
Asumiendo que quería que los últimos 5 registros ordenados por el campo Nombre en orden ascendente, se podría hacer algo como esto, que debería funcionar en cualquiera de SQL 2000 o 2005:
select Name
from (
select top 5 Name
from MyTable
order by Name desc
) a
order by Name asc
Esto debe marcarse como la respuesta correcta (y la más compatible). – AshesToAshes
Si conoce el número de filas habrá en total puede usar la función ROW_NUMBER(). He aquí un examble de MSDN (http://msdn.microsoft.com/en-us/library/ms186734.aspx)
USE AdventureWorks;
GO
WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber'
FROM Sales.SalesOrderHeader
)
SELECT *
FROM OrderedOrders
WHERE RowNumber BETWEEN 50 AND 60;
Suponga que tiene un índice de identificación, esta será la velocidad del rayo:
SELECT * FROM [MyTable] WHERE [id] > (SELECT MAX([id]) - 5 FROM [MyTable])
Esto solo es seguro si no ha eliminado ningún registro. es decir. Si su identificación max = 100, pero se eliminan ficha 99, sólo se va a terminar con 4 registros, no – Amber
select *
from table
order by empno(primary key) desc
fetch first 5 rows only
5. Como está escrito, selecciona todas las filas en orden, no sólo la primera 5. – JYelton
@JYelton descendente - No se doesn' t. Solo es válido en SQL Server 2012 e ignora el requisito de "sin clasificación". –
- Necesitas contar el número de filas en el interior tabla (digamos que tenemos 12 filas)
- restar 5 filas de ellos (ahora estamos en 7)
seleccione *, donde index_column> 7
select * from users where user_id > ((select COUNT(*) from users) - 5)
se les puede pedir ASC o DESC
Pero cuando se utiliza este código
select TOP 5 from users order by user_id DESC
no se ordenará fácilmente.
obtener el recuento de esa mesa
select count(*) from TABLE
select top count * from TABLE where 'primary key row' NOT IN (select top (count-5) 'primary key row' from TABLE)
select * from table limit 5 offset (select count(*) from table) - 5;
Últimos 5 filas recuperar en MySQL
Esta consulta funciona a la perfección
SELECT * FROM (SELECT * FROM recharge ORDER BY sno DESC LIMIT 5)sub ORDER BY sno ASC
o
select sno from(select sno from recharge order by sno desc limit 5) as t where t.sno order by t.sno asc
En SQL Server 2012 se puede hacer esto:
Declare @Count1 int ;
Select @Count1 = Count(*)
FROM [Log] AS L
SELECT
*
FROM [Log] AS L
ORDER BY L.id
OFFSET @Count - 5 ROWS
FETCH NEXT 5 ROWS ONLY;
Cuando el número de filas de la tabla es menor que 5 las respuestas de Matt Hamilton y msuvajac es incorrecta. Porque un valor de recuento de filas N TOP puede no ser negativo.
Un gran ejemplo se puede encontrar Here.
estoy utilizando este código:
select * from tweets where placeID = '$placeID' and id > (
(select count(*) from tweets where placeID = '$placeID')-2)
Buscar 5 registros de registros últimos se pueden utilizar esto,
SELECT *
FROM Table Name
WHERE ID <= IDENT_CURRENT('Table Name')
AND ID >= IDENT_CURRENT('Table Name') - 5
DECLARE @MYVAR NVARCHAR(100)
DECLARE @step int
SET @step = 0;
DECLARE MYTESTCURSOR CURSOR
DYNAMIC
FOR
SELECT col FROM [dbo].[table]
OPEN MYTESTCURSOR
FETCH LAST FROM MYTESTCURSOR INTO @MYVAR
print @MYVAR;
WHILE @step < 10
BEGIN
FETCH PRIOR FROM MYTESTCURSOR INTO @MYVAR
print @MYVAR;
SET @step = @step + 1;
END
CLOSE MYTESTCURSOR
DEALLOCATE MYTESTCURSOR
Prueba de esto, si usted no tiene una clave primaria o columna idéntica:
select [Stu_Id],[Student_Name] ,[City] ,[Registered],
RowNum = row_number() OVER (ORDER BY (SELECT 0))
from student
ORDER BY RowNum desc
- 1. MYSQL Seleccionar de la tabla, obtener las últimas/últimas 10 filas en la tabla
- 2. Sqlalchemy obtiene las últimas X filas en orden
- 3. Tabla de datos seleccionar las 5 filas superiores
- 4. mysql seleccionar desde n últimas filas
- 5. Recuperar N últimas filas de un mysqldump
- 6. Recuperando todas las filas de una tabla sin HQL?
- 7. ¿Cuál es la forma más eficiente de seleccionar las últimas n filas en una tabla sin cambiar la estructura de la tabla?
- 8. ¿Obtiene las últimas N filas en la base de datos en orden?
- 9. ¿Cómo selecciono TOP 5 PERCENT de cada grupo?
- 10. Anexando a las filas de una tabla
- 11. seleccionar filas en una tabla, excepto las filas del encabezado de tabla
- 12. ¿Cómo selecciono una muestra de filas al azar con repetición desde una matriz en R?
- 13. jQuery: seleccione las primeras cinco filas de una tabla
- 14. ¿Cómo actualizo n filas en una tabla?
- 15. ¿Cómo selecciono X filas aleatorias mientras garantizo que Y ciertas filas específicas están en el resultado?
- 16. ¿Cómo mover atómicamente las filas de una tabla a otra?
- 17. ¿Cómo selecciono count() y LIMIT?
- 18. Usando jQuery, ¿cómo selecciono un rango de filas?
- 19. subversión recibir las últimas sin actualizar svn: externos
- 20. ¿Cómo se copian las filas de una tabla a otra?
- 21. Cómo ordenar en la columna para las filas que contienen una determinada palabra
- 22. ¿Cómo selecciono un número fijo de filas para cada grupo?
- 23. Rubí/Rails - Obtener las últimas dos valores en una matriz
- 24. Manera eficiente de actualizar todas las filas en una tabla
- 25. Borrar todas las filas en la tabla
- 26. PHP, MYSQL: Ordenar por fecha, pero las fechas vacías no son las últimas
- 27. ¿Cómo selecciono las filas donde un valor de columna comienza con una cierta cadena?
- 28. Ordenar una tabla de datos
- 29. ¿Es posible tener una selección sin tabla con varias filas?
- 30. cómo MySQL ordenar las filas con los mismos valores
@Ganesh - usted debe expresarlo r pregunta como una pregunta real, no como una declaración "Necesito ayuda". – paxdiablo