web-dev-qa-db-fra.com

MySQL - Sélectionnez la dernière ligne insérée de la manière la plus simple

Je dois simplement sélectionner la dernière ligne entrée spécifiée par la condition, par exemple:

SELECT ID from bugs WHERE user=Me

Je n'ai à renvoyer que le tout dernier identifiant saisi par l'utilisateur "Me". Y a-t-il un moyen simple de faire cela? Je vous remercie.

25
Thomas

Il serait préférable d’avoir une colonne TIMESTAMP dont la valeur par défaut est CURRENT_TIMESTAMP .. c’est le seul comportement prédictif que vous puissiez trouver ici.

La deuxième meilleure chose que vous puissiez faire est ORDER BY ID DESC LIMIT 1 et espérons que l'ID le plus récent est la plus grande valeur.

38
Matt

Vous pouvez utiliser ORDER BY ID DESC, mais c'est beaucoup plus rapide si vous allez de cette façon:

SELECT * FROM bugs WHERE ID = (SELECT MAX(ID) FROM bugs WHERE user = 'me')

Si vous avez une table énorme, cela pourrait faire une différence significative.

MODIFIER

Vous pouvez même définir une variable au cas où vous en auriez besoin plus d'une fois (ou si vous pensez que c'est plus facile à lire).

SELECT @bug_id := MAX(ID) FROM bugs WHERE user = 'me';
SELECT * FROM bugs WHERE ID = @bug_id;
29
pmrotule
SELECT MAX(ID) from bugs WHERE user=Me
29
SiLent SoNG

Une façon d'accomplir cela est de commander vos enregistrements et de les limiter à 1. Par exemple, si vous avez le tableau suivant («données»). 

    id | user | price
   -------------------
    1  |  me  | 40.23
    2  |  me  | 10.23

Essayez la requête SQL suivante

  select * from data where user='me' order by id desc limit 1
13
user1400718

En cas de simultanéité, le dernier enregistrement peut ne pas être celui que vous venez d'entrer. Il peut être préférable d’obtenir le dernier enregistrement en utilisant la clé primaire.

S'il s'agit d'un champ à incrémentation automatique, utilisez SELECT LAST_INSERT_ID(); pour obtenir l'identifiant que vous venez de créer.

7
Wayne
SELECT * FROM `table_name` 
ORDER BY `table_name`.`column_name` DESC
LIMIT 1 
3
rommo roy

Juste après l'exécution de la requête mysql à partir de php

l'obtenir par 

$lastid=mysql_insert_id();

cela vous donne la valeur alst auto increment ID

0
pratik shourabh