Sql delete

Signaler
Messages postés
11
Date d'inscription
jeudi 11 juin 2009
Statut
Membre
Dernière intervention
31 mars 2010
-
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
-
j aimerais sortir une table et conserver seulement les derniers enregistrements de la table et supprimer le reste.enfin genre delete from table where (select * from table where id =$i order by id_mess)
je suis peut etre pas assez clair parce ke je suis a la fete de silvester.
bonne annee et merci de repondre si vs comprenez

5 réponses

Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Yop,

Ben je ne vous pas où cela coince, tu as ta requête ^^ , avec cela tu concervera les enregistrement, maintenant tu parles de sortir une table, donc p-e dans un fichier, et encore une fois si tu as ta requetête , tu récup le résultat et tu l'écrit dans un fichier :).


++
deck_bsd
___________________________________
http://deck-bsd.eurower.net
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
32
Salut

delete from messages where id_mess not in (select TOP 100 id_mess from table  order by id_mess)



Ce code devrait détruire les messages sauf les 100 derniers.

Bon dev.
Messages postés
11
Date d'inscription
jeudi 11 juin 2009
Statut
Membre
Dernière intervention
31 mars 2010

Slt a vous. je dois dire WOW vous ne fetez pas? merci tout de meme pr cette rapide reponse et je crois meme ke c est la solution mais kan je l applik ca ne fonctionne pas je suis sur mysql et j ai lu ke top est le correspondant de limit et ne fonctionne ke sur oracle. alors j ai essaye le model mysql et ca m envoie une erreur
model:
DELETE FROM table WHERE NOT IN (SELECT * FROM table WHERE id_show ='$shower' ORDER BY id_message DESC LIMIT 0, 10)
pour avoir seulement les 10 plus recentes lignes.
erreur:
Erreur MySQL: 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 'IN (SELECT * FROM table WHERE id_show ='1' ORDER BY id_message DESC LIMIT 0,' at line 1
Je vous remercie d avance, si kelk un comprend le problem je suis tout Ouie
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Salut,

... WHERE id_message NOT IN ....


Cordialement,



Kohntark -
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
32
Désolé, j'ai mis pour SQL server.

Attention, il faut qu'une seule colonne et pas l'* pour la sous requete dans le IN.

C'est assez logique.
id_message in (1, //row 1
               2, //row 2
               3)//row 3


alors qu'avec l'*
ca fait
where id_message in (1,'message1' //row 1
               2,'message2' //row 2
               3,'message3')//row 3

Et donc tu ne peux comparer un id avec 2 colonnes (sql ne sait pas faire)


Comme l'indique Kohntark, il faut indiquer la colonne sr laquelle le in est fait
ici id_message


Bon dev