72 votes

Obtenir le dernier enregistrement d'une table dans Postgres

J'utilise Postgres et je n'arrive pas à obtenir le dernier enregistrement de ma table :

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

Comment puis-je faire cela en sachant que l'horodatage est un identifiant unique de l'enregistrement ?

124voto

bpgergo Points 9407

Si sous « dernier enregistrement », vous voulez dire l'enregistrement qui a la dernière valeur d'horodatage, essayez ceci :

 my_query = client.query("
  SELECT TIMESTAMP,
    value,
    card
  FROM my_table
  ORDER BY TIMESTAMP DESC
  LIMIT 1
");

24voto

chl Points 10205

vous pouvez utiliser

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

en supposant que vous vouliez également trier par timestamp ?

8voto

Allan Registos Points 321

Le dernier enregistrement inséré peut être interrogé en utilisant ceci en supposant que vous ayez l'"id" comme clé primaire :

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

En supposant que chaque nouvelle ligne insérée utilisera la valeur entière la plus élevée pour l'ID de la table.

7voto

phsaires Points 535

Si vous acceptez un pourboire, créez un identifiant dans cette table comme serial. La valeur par défaut de ce champ sera :

 nextval('table_name_field_seq'::regclass).

Ainsi, vous utilisez une requête pour appeler le dernier registre. En utilisant votre exemple :

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

J'espère que cette astuce vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X