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.
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.
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;
SELECT MAX(ID) from bugs WHERE user=Me
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
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.
SELECT * FROM `table_name`
ORDER BY `table_name`.`column_name` DESC
LIMIT 1
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