Derniere entree d'un champ

Derniere entree d'un champ - SQL/NoSQL - Programmation

Marsh Posté le 04-12-2006 à 01:09:10    

Bonjour,
 
 
Je n'arrive pas à recuperer la dernière entrée d'un champ dans ma base de données MySQL.
 
Voila les 2 requetes que j'ai essayé :
 
$sql = "DELETE FROM email WHERE mail_id=MAX(mail_id)";
$sql = "DELETE FROM email WHERE mail_id=(SELECT MAX(mail_id) FROM email)";
 
Il me faut en fait la dernière entrée de mail_id.
 
Car à ce mail_id correspond un mail_usr que je dois supprimer si l'utilisateur appel cette fonction.
 
 
Merci d'avance pour votre aide.
 
 
ps : voila l'erreur qui ressort : Erreur SQL !DELETE FROM email WHERE mail_id=(SELECT MAX(mail_id) FROM email)
You can't specify target table 'email' for update in FROM clause


---------------
~ Msi z270 Gaming Pro Carbon | i7 7700K @4.8Ghz + Dark Rock Pro4 | 16Go Corsair DDR4 2400 | RTX 2080 Ti | OS SSD 840 + Jeux Raid0 SSD 850 + 2*2To Seagate | Cooler Master Cosmos 1000 + Corsair CMPSU-620HX
Reply

Marsh Posté le 04-12-2006 à 01:09:10   

Reply

Marsh Posté le 04-12-2006 à 07:00:28    

Peut-être que ça passerait en découpant la requête en deux :
D'abord la sélection du max. Puis la suppression.

Reply

Marsh Posté le 04-12-2006 à 10:09:59    

j'ai jamais testé, mais on peut utiliser order by et limit dans un delete? Si oui, tu peux faire un DELETE FROM email ORDER BY mail_id LIMIT 0, 1

Reply

Marsh Posté le 04-12-2006 à 10:51:56    

euh... juste comme ça...
 
le gars fait je ne sais quelle manip. ok. maintenant, dans la table mail, la dernière ligne correspond à lui.
maintenant, il voit le bouton pour se désincrire ou je ne sais pas trop quoi.
y se tâte, y sait pas trop le gars. il va boire une clope et toussa, puis revient.
pendant ce temps, un autre gars fait la même action que lui.
sauf que lui, y veut pas se désincrire ce type là...
le problème, c'est que le max(id) correspond à lui maintenant, et pas à l'autre.
donc quand l'autre fait "supprimer", au lieu d'effacer sa ligne, il efface celle du second :spamafote:
 
c'est mal :o
 
donc travaille avec un ID connu, et je fais JAMAIS confiance à un critère de la sorte pour effacer une information précise.

Reply

Marsh Posté le 04-12-2006 à 13:09:12    

Tu n'as pas tort MagicBuzz mais là en l'occurence, l'utilisateur se trouve devant une liste d'emails (qui lui est propre) et il peut grace à ce bouton supprimer la dernière entrée ajoutée.


Message édité par Tonio94 le 04-12-2006 à 13:12:31

---------------
~ Msi z270 Gaming Pro Carbon | i7 7700K @4.8Ghz + Dark Rock Pro4 | 16Go Corsair DDR4 2400 | RTX 2080 Ti | OS SSD 840 + Jeux Raid0 SSD 850 + 2*2To Seagate | Cooler Master Cosmos 1000 + Corsair CMPSU-620HX
Reply

Marsh Posté le 04-12-2006 à 13:11:12    

Erreur SQL !DELETE FROM email ORDER BY mail_id LIMIT 0,1
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 '1' at line 1

 
Ca passe pas ca :(


---------------
~ Msi z270 Gaming Pro Carbon | i7 7700K @4.8Ghz + Dark Rock Pro4 | 16Go Corsair DDR4 2400 | RTX 2080 Ti | OS SSD 840 + Jeux Raid0 SSD 850 + 2*2To Seagate | Cooler Master Cosmos 1000 + Corsair CMPSU-620HX
Reply

Marsh Posté le 04-12-2006 à 14:50:13    

je m'en doudais un peu

Reply

Marsh Posté le 04-12-2006 à 19:01:56    

:up:


---------------
~ Msi z270 Gaming Pro Carbon | i7 7700K @4.8Ghz + Dark Rock Pro4 | 16Go Corsair DDR4 2400 | RTX 2080 Ti | OS SSD 840 + Jeux Raid0 SSD 850 + 2*2To Seagate | Cooler Master Cosmos 1000 + Corsair CMPSU-620HX
Reply

Marsh Posté le 09-02-2007 à 11:16:34    

Hello,
 
Je viens de rencontrer le même problème que toi, à savoir accéder à un champ de la dernière ligne d'une table.
 
olivthill était sur la bonne voie, en effet il faut diviser le problème car les fonctions en SQL ici Max() ne peuvent etre utilisées dans les conditions :
 
$sql = "DELETE FROM email WHERE mail_id=MAX(mail_id)";
 
La solution est d'utiliser une requête imbriquée comme ceci :
 

$sql = "DELETE FROM email WHERE mail_id=   ( SELECT MAX(mail_id) FROM email );"

 
Voila, j'espère que ça t'aidera a avancer  ;)  Tiens nous au courant !


---------------
De l'affrontemant nait le respect
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed