¿Cuál es la forma más eficiente de leer la última fila con SQL Server?Cómo leer la última fila con SQL Server
La tabla está indexada en una clave única: los valores de clave "inferior" representan la última fila.
¿Cuál es la forma más eficiente de leer la última fila con SQL Server?Cómo leer la última fila con SQL Server
La tabla está indexada en una clave única: los valores de clave "inferior" representan la última fila.
Si está utilizando MS SQL, puede intentar:
SELECT TOP 1 * FROM table_Name ORDER BY unique_column DESC
Necesitará algún tipo de columna de identificación única en su tabla, como una clave principal de autocompletado o una columna de fecha y hora (preferiblemente la clave principal). A continuación, puede hacer esto:
SELECT * FROM table_name ORDER BY unique_column DESC LIMIT 1
El ORDER BY column
le dice que rearange los resultados de acuerdo a los datos de esa columna, y la DESC
dice que para revertir los resultados (poniendo así el último primero). Después de eso, el LIMIT 1
le dice que solo devuelva una fila.
MSSQL no utiliza LÍMITE –
Wow, duro, la pregunta original ni siquiera decir SQL Server específicamente. La solución anterior es perfectamente legítima aunque SQL Server usa palabras diferentes para describir el mismo concepto. +1 –
select whatever,columns,you,want from mytable
where mykey=(select max(mykey) from mytable);
¿Qué es mykey? ¿en mi caso? – Mowgli
@Mowgli 'mykey' es su tabla índice –
el fin de recuperar la última fila de una tabla de 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 de base de datos MS SQL 2005, puede utilizar la siguiente consulta:
select top 1 column_name from table_name;
'select top 1' sin una orden por no es una forma confiable de obtener el primer registro. Si no realiza un pedido por, otorga permiso a SQL para que le proporcione el registro que desee. –
Estoy bastante seguro de que es:
SELECT last(column_name) FROM table
becaause yo uso algo similar:
SELECT last(id) FROM Status
Last() no es una función de sql-server – Taryn
SELECT * from Employees where [Employee ID] = ALL (SELECT MAX([Employee ID]) from Employees)
Mejor respuesta similar podemos obtener la primera fila SELECT * de Empleados donde [Employee ID] = ALL (SELECT MIN ([Employee ID]) de Employees) – manas
Esta es la forma de obtener el último registro y actualizar un campo en Acceda a DB.
ACTUALIZACIÓNcompalints
SET tkt = addzone &'-'& customer_code &'-'& sn where sn in (select max(sn) from compalints)
Si alguna de su DNI están en orden, yo estoy asumiendo que habrá un poco de orden en su base de datos
SELECT * FROM TABLE WHERE ID = (SELECT MAX(ID) FROM TABLE)
Si usted tiene una tabla duplicada, puede tener una Identidad = 1000 en base de datos local e Identidad = 2000 en la base de datos del cliente, de modo que si captura el último ID siempre puede encontrar el último del cliente, no el último de la base de datos conectada actualmente. Así que el mejor método que devuelve la última base de datos conectada es:
SELECT IDENT_CURRENT('tablename')
SELECT * FROM TABLE WHERE ID = (SELECT MAX(ID) FROM TABLE)
Bienvenido al sitio . Esto podría ser un comentario (si tuviera el representante), ¿le importaría expandirlo agregando texto para explicar cómo resuelve el problema y para diferenciarlo de las 10 respuestas anteriores? – gung
He intentado utilizar la última en la consulta SQL en el servidor SQL 2008, pero le da a este err: " 'última' no es una empresa reconocida y construyeron -en nombre de la función ".
Así que terminé usando:
select max(WorkflowStateStatusId) from WorkflowStateStatus
para obtener el ID de la última fila. También se podría utilizar
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)
¡Qué maravillosa respuesta entendí muchas gracias! –
Si usted no tiene ninguna columna ordenada, puede utilizar el identificador físico 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
Creo que a continuación consulta trabajará 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 tengas entendido ... :)
probar este
SELECT id from comission_fees ORDER BY id DESC LIMIT 1
Usted puede utilizar last_value: SELECT LAST_VALUE(column) OVER (PARTITION BY column ORDER BY column)...
lo prueba en una de mis bases de datos y funcionó como se esperaba.
También se puede consultar la documentación de aquí: https://msdn.microsoft.com/en-us/library/hh231517.aspx
¿Qué pasa si tiene 5 millones de registros en DB! : - \ – deepdive