2011-06-07 72 views
14

estoy usando Postgres y no logro obtener el último registro de mi mesa:Obtener último registro de una tabla en Postgres

my_query = client.query("SELECT timestamp,value,card from my_table"); 

¿Cómo puedo hacer que knowning que hora es un identificador único del registro ?

Respuesta

44

Si se refiere al registro que tiene el valor más reciente marca de tiempo por

último registro

my_query = client.query(" 
SELECT timestamp,value,card from my_table 
order by timestamp desc limit 1"); 
+1

¿Qué sucede si no tiene una columna de marca de tiempo que represente el tiempo de inserción? – WebWanderer

+2

@WebWanderer 'SELECT id, valor, tarjeta FROM my_table ORDER BY id DESC LIMIT 1;' – devius

11

puede utilizar

SELECT timestamp, value, card 
FROM my_table 
ORDER BY timestamp DESC 
LIMIT 1 

asumiendo que usted quiere también para ordenar por timestamp?

5

Si acepta una sugerencia, cree una identificación en esta tabla como serial. El valor predeterminado de este campo será:

nextval('table_name_field_seq'::regclass). 

Entonces, utiliza una consulta para llamar al último registro. Usando su ejemplo:

pg_query($connection, "SELECT currval('table_name_field_seq') AS id; 

Espero que este consejo lo ayude.

+0

Lo siento por mi mal inglés. – phsaires

+0

si finalmente se elimina la última fila, esto aún devolvería su id ... no es un consejo seguro :) – ALTN

3

El último registro insertado se puede consultar utilizando esta suponiendo que tiene el "id" como la clave principal:

SELECT timestamp,value,card FROM my_table WHERE id=(select max(id) from my_table) 

Suponiendo que cada nueva fila insertada utilizará el valor entero más alto para el id de la tabla.

Cuestiones relacionadas