Je souhaite sélectionner la première ligne d'un tableau, classée par time
(ascendant), puis supprimer cette ligne. Je ne veux pas utiliser deux requêtes car il est possible qu'un autre client sélectionne cette ligne avant qu'elle ne soit supprimée (plusieurs machines seront connectées à la fois à partir de différents réseaux).SELECT et DELETE
Je pensais que je pouvais faire quelque chose comme
SELECT * FROM `mytable` ORDER BY `time` LIMIT 1;
DELETE FROM `mytable` ORDER BY `time` LIMIT 1
... mais je suis une erreur:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; DELETE * FROM
pending
ORDER BYtime
LIMIT 1' at line 1
Quelle est la meilleure façon de le faire? Merci.
Faut-il supprimer tmpTable plus tard ou ..? –
Oui (15 caractères) –
Vous n'avez pas besoin de créer une table temporaire explicitement. Vous pouvez utiliser une table dérivée 'delete from YourTable où ID = (sélectionnez id from (sélectionnez id depuis YourTable order par time limit 1) t);'. Mais la réponse de Riedsio semble encore meilleure. –