La Web del Programador: Comunidad de Programadores
https://www.lawebdelprogramador.com/foros/SQL/48592-Obtener-ultimo-registro-en-una-select.html

Obtener ultimo registro en una select

Obtener ultimo registro en una select

Publicado por Slurmmm (4 intervenciones) el 25/04/2001 16:20:15
(Estamos en ORACLE)

Quiero recuperar unicamente el ultimo registro de una select cualquiera. Si quisiera obtener el primero me bastaría con poner en la clausula 'where' lo siguiente: 'and rownum < 2'. Sin embargo no se como sacar el ultimo. He intentado (pero no va) poner lo siguiente:

SELECT....
FROM....
WHERE.... and
rownum = (select max(rownum)
de la misma select)

NOTA: No me sirve poner 'order by rowid desc' porque solo quiero recuperar un registro

Gracias.

P.D.:¿Alguien me puede decir por qué no me va mi propuesta de solución?. Gracias otra vez

RE:Obtener ultimo registro en una select

Publicado por ibai (47 intervenciones) el 26/04/2001 16:31:44
Usa la clausula "TOP 1". Ej.
SELECT TOP 1 * FROM... ORDER BY RowId DESC

Espero te sirva
Saludos,
Ibai

RE:Obtener ultimo registro en una select

Publicado por slurmmm (4 intervenciones) el 27/04/2001 10:45:59
No va. No conozco la palabra reservada TOP (no se si existe en ORACLE)

RE:Obtener ultimo registro en una select

Publicado por ibai (47 intervenciones) el 27/04/2001 11:39:41
Lo siento TOP es de SQL Server. Pero me imagino que tiene que haber algo por el estilo en Oracle. Se le tiene que poder decir que te traiga solo X registros.

Saludos,
Ibai

RE:Obtener ultimo registro en una select

Publicado por slurmmm (4 intervenciones) el 27/04/2001 12:53:25
Sí que existe es "rownum". Poniéndole en la clausula "where": "and rownum < 2" me devuelve solo un registro (el primero), ya que el rownum numera a las filas devueltas, pero no sirve para obtener el ultimo registro, porque yo probé:

select ....
from ....
where .... and
rownum = (select max(rownum)
de la misma select)

Y eso no va.

En fin, de todas formas, gracias.

RE:Obtener ultimo registro en una select

Publicado por JUVER (1 intervención) el 01/10/2008 18:29:56
prueba con esto..

SELECT *
FROM (SELECT CAMPO1, CAMPO2
FROM TABLA1
WHERE CAMPO3 = 'XXXXXXX'
ORDER BY CAMPO1 DESC)
WHERE ROWNUM = 1;

RE:Obtener ultimo registro en una select

Publicado por Gabriel M (1 intervención) el 28/11/2022 18:03:36
Hola, con esta si funciona, solo debes colocar un order by para que te traiga o el primero o el ultimo.
Gracias 1000

RE:Obtener ultimo registro en una select

Publicado por Wladimir (1 intervención) el 31/05/2019 16:29:42
Con el uso de la siguiente sentencia es suficiente.

Sintaxis general

select * from tabla ORDER BY campo DESC

Sintaxis específica

select * from producto ORDER BY idProducto DESC. Este ejemplo te dará como primera fila o registro, el ultimo ingresado. Como si fuese un pila.

RE:Obtener ultimo registro en una select

Publicado por Carlos Arturo Castro Castro (1 intervención) el 09/04/2009 21:55:15
Cordial saludo.
Un poco tarde pero acabo de llegar al foro. Le puede servir a aguien más.
Esta es otra solución:

SELECT campo FROM tabla WHERE ROWNUM <numRegistro MINUS
SELECT campo FROM tabla WHERE ROWNUM <numRegistro -1;

Si se quiere almacenar en un cursor implícito se puede escribir:

SELECT
(SELECT campo FROM tabla WHERE ROWNUM <numRegistro MINUS
SELECT campo FROM tabla WHERE ROWNUM <numRegistro-1)
INTO variable FROM DUAL;
Imágen de perfil de José Antonio

RE:Obtener ultimo registro en una select

Publicado por José Antonio (1 intervención) el 06/06/2016 23:05:39
SELECT MAX(column_name) FROM table_name;
sin imagen de perfil

RE:Obtener ultimo registro en una select

Publicado por Andres (1 intervención) el 13/09/2016 22:37:10
Funciona perfecto, gracias (y).

Obtener ultimo registro en una select

Publicado por zoe (1 intervención) el 16/06/2017 00:44:49
si tienes un id tipo identity utiliza una sentencia asi select * from tu tabla where campo identity=(select MAX(campo identity) from tu tabla) :p saludos