2008-10-07 26 views

Respuesta

148

Si está utilizando MS SQL, puede intentar:

SELECT TOP 1 * FROM table_Name ORDER BY unique_column DESC 
+11

¿Qué pasa si tiene 5 millones de registros en DB! : - \ – deepdive

17

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.

+4

MSSQL no utiliza LÍMITE –

+4

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 –

19
select whatever,columns,you,want from mytable 
where mykey=(select max(mykey) from mytable); 
+0

¿Qué es mykey? ¿en mi caso? – Mowgli

+0

@Mowgli 'mykey' es su tabla índice –

1

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; 
+2

'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. –

-5

Estoy bastante seguro de que es:

SELECT last(column_name) FROM table 

becaause yo uso algo similar:

SELECT last(id) FROM Status 
+7

Last() no es una función de sql-server – Taryn

0
SELECT * from Employees where [Employee ID] = ALL (SELECT MAX([Employee ID]) from Employees) 
+1

Mejor respuesta similar podemos obtener la primera fila SELECT * de Empleados donde [Employee ID] = ALL (SELECT MIN ([Employee ID]) de Employees) – manas

0

Esta es la forma de obtener el último registro y actualizar un campo en Acceda a DB.

ACTUALIZACIÓNcompalintsSET tkt = addzone &'-'& customer_code &'-'& sn where sn in (select max(sn) from compalints)

10

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)

0

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') 
-1
SELECT * FROM TABLE WHERE ID = (SELECT MAX(ID) FROM TABLE) 
+0

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

3

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) 
+0

¡Qué maravillosa respuesta entendí muchas gracias! –

0

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 
3

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 ... :)

3

probar este

SELECT id from comission_fees ORDER BY id DESC LIMIT 1 
2

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

Cuestiones relacionadas