¿Cuál es la forma más eficiente de leer la última fila con SQL Server?
La tabla está indexada en una clave única: los valores clave "inferiores" representan la última fila.
sql
sql-server
rp.
fuente
fuente
SELECT TOP 1000 * FROM table_name ORDER BY column_name DESC
y debería generar los últimos 1000 registros.select whatever,columns,you,want from mytable where mykey=(select max(mykey) from mytable);
fuente
mykey
es su índice de mesamykey
es un identificador único, este enfoque no ayudaríaNecesitará algún tipo de columna de identificación única en su tabla, como una clave principal de llenado automático o una columna de fecha y hora (preferiblemente la clave principal). Entonces puedes hacer esto:
SELECT * FROM table_name ORDER BY unique_column DESC LIMIT 1
El
ORDER BY column
le dice que reacomode los resultados de acuerdo con los datos de esa columna, yDESC
le dice que invierta los resultados (poniendo así el último primero). Después de eso,LIMIT 1
le dice que solo pase una fila hacia atrás.fuente
Si algunos de sus ID están en orden, supongo que habrá algún orden en su base de datos
SELECT * FROM TABLE WHERE ID = (SELECT MAX(ID) FROM TABLE)
fuente
Creo que la siguiente consulta funcionará para SQL Server con el máximo rendimiento sin ninguna columna ordenable
SELECT * FROM table WHERE ID not in (SELECT TOP (SELECT COUNT(1)-1 FROM table) ID FROM table)
Espero que lo hayas entendido ... :)
fuente
Intenté usar last in sql query en SQl server 2008 pero me da este error: "'last' no es un nombre de función integrado reconocido".
Así que terminé usando:
select max(WorkflowStateStatusId) from WorkflowStateStatus
para obtener el Id de la última fila. También se podría usar
Declare @i int set @i=1 select WorkflowStateStatusId from Workflow.WorkflowStateStatus where WorkflowStateStatusId not in (select top ( (select count(*) from Workflow.WorkflowStateStatus) - @i ) WorkflowStateStatusId from .WorkflowStateStatus)
fuente
Puede utilizar last_value:
SELECT LAST_VALUE(column) OVER (PARTITION BY column ORDER BY column)...
Lo pruebo en una de mis bases de datos y funcionó como se esperaba.
También puede consultar la documentación aquí: https://msdn.microsoft.com/en-us/library/hh231517.aspx
fuente
Prueba esto
SELECT id from comission_fees ORDER BY id DESC LIMIT 1
fuente
LIMIT
. Esto regresaIncorrect syntax near LIMIT
Para recuperar la última fila de una tabla para la base de datos MS SQL 2005, puede utilizar la siguiente consulta:
select top 1 column_name from table_name order by column_name desc;
Nota: Para obtener la primera fila de la tabla para la base de datos MS SQL 2005, puede utilizar la siguiente consulta:
select top 1 column_name from table_name;
fuente
select top 1
sin una orden por no es una forma confiable de obtener el primer registro. Si no hace un pedido por, da permiso para que SQL le proporcione cualquier registro que le plazca.OFFSET
yFETCH NEXT
son una característica de SQL Server 2012 para lograr la paginación SQL mientras se muestran los resultados.El
OFFSET
argumento se usa para decidir la fila inicial para devolver filas a partir de un resultado y elFETCH
argumento se usa para devolver un número de filas.SELECT * FROM table_name ORDER BY unique_column desc OFFSET 0 Row FETCH NEXT 1 ROW ONLY
fuente
SELECT * from Employees where [Employee ID] = ALL (SELECT MAX([Employee ID]) from Employees)
fuente
Así es como obtiene el último registro y actualiza un campo en Access DB.
ACTUALIZAR
compalints
SET tkt = addzone &'-'& customer_code &'-'& sn where sn in (select max(sn) from compalints )
fuente
Si no tiene ninguna columna ordenada, puede usar la identificación física de cada línea:
SELECT top 1 sys.fn_PhysLocFormatter(%%physloc%%) AS [File:Page:Slot], T.* FROM MyTable As T order by sys.fn_PhysLocFormatter(%%physloc%%) DESC
fuente
Si tiene una tabla replicada, puede tener Identity = 1000 en localDatabase e Identity = 2000 en clientDatabase, por lo que si detecta la última ID, puede encontrar siempre la última del cliente, no la última de la base de datos conectada actual. Entonces, el mejor método que devuelve la última base de datos conectada es:
SELECT IDENT_CURRENT('tablename')
fuente
Bueno, no obtengo el "último valor" en una tabla, obtengo el último valor por instrumento financiero. No es lo mismo, pero supongo que es relevante para algunos que buscan averiguar "cómo se hace ahora". También usé RowNumber () y CTE's y antes de eso simplemente tomar 1 y ordenar por [columna] desc. Sin embargo, ya no necesitamos ...
Estoy usando SQL Server 2017, estamos registrando todos los ticks en todos los intercambios a nivel mundial, tenemos ~ 12 mil millones de ticks por día, almacenamos cada Bid, ask y trade, incluidos los volúmenes y los atributos de un tick (bid, ask, trade ) de cualquiera de los intercambios dados.
Tenemos 253 tipos de datos de ticks para cualquier contrato dado (principalmente estadísticas) en esa tabla, el último precio negociado es el tipo de tick = 4, por lo que, cuando necesitamos obtener el "último" de Price, usamos:
select distinct T.contractId, LAST_VALUE(t.Price)over(partition by t.ContractId order by created ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) from [dbo].[Tick] as T where T.TickType=4
Puede ver el plan de ejecución en mi sistema de desarrollo, se ejecuta de manera bastante eficiente, se ejecuta en 4 segundos mientras el ETL de importación de intercambio está bombeando datos a la tabla, habrá algunos bloqueos que me ralentizarán ... así es como funcionan los sistemas en vivo.
fuente
SELECT * FROM TABLE WHERE ID = (SELECT MAX(ID) FROM TABLE)
fuente
Estoy bastante seguro de que es:
SELECT last(column_name) FROM table
Porque uso algo similar:
SELECT last(id) FROM Status
fuente