Question simple sur DELETE, LIMIT et ORDER BY

Question simple sur DELETE, LIMIT et ORDER BY - SQL/NoSQL - Programmation

Marsh Posté le 30-07-2008 à 22:14:15    

Bonjour
 
J'ai un petit problème dans l'administration de la base de SUMo (http://www.kcsoftwares.com/?sumo) et pour faire simple je vais résumer comme suivant :
 
J'ai une table à 2 colonnes : Nom (Char[100]) et Tps (date)
Cette table possède 1000 enregistrements.
 
Je cherche à faire une requête qui supprime les 50 enregistrement les plus anciens.
 
Peux on faire mieux que DELETE FROM Table WHERE nom IN (SELECT nom FROM Table ORDER BY Tps DESC LIMIT 50) ? (et encore j'ai pas testé....)
 
Merci d'avance !

Reply

Marsh Posté le 30-07-2008 à 22:14:15   

Reply

Marsh Posté le 31-07-2008 à 09:08:30    

ben normalement ca devrais marche mais dans ta table tu as pas une colonne pour la cle primaire , comme ca tu fait le Desc sur ta cle
et normalement ca devrait marcher

Reply

Marsh Posté le 31-07-2008 à 09:32:15    

A l'instinct je dirais que c'est du MySQL et donc que tu peux utiliser ce genre de syntaxe:

Code :
  1. DELETE FROM TABLE ORDER BY nom DESC LIMIT 50


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 31-07-2008 à 11:20:32    

"ORDER BY nom DESC", ca va pas plutôt supprimer les 50 plus récents ? :whistle:

Reply

Marsh Posté le 31-07-2008 à 17:36:10    

mrbebert a écrit :

"ORDER BY nom DESC", ca va pas plutôt supprimer les 50 plus récents ? :whistle:


il faut pas trier par le nom
disons les enregistrement suivant et qu'on supprime les 2 plus anciens

Code :
  1. id nom
  2. 1 fred
  3. 2 albert
  4. 3 francois
  5. 4 robert


sinon on trie par DESC nom , on va avoir  

Code :
  1. robert
  2. fred
  3. francois
  4. albert


 
et on supprimera alors  robert et fred, alors que robert vient d'arriver
 
par contre si tu as une cle , pour tes utilisateurs, tu fait (ou meme la date
 

Code :
  1. DELETE FROM TABLE ORDER BY id(ou date) LIMIT 50


la ca te supprimera les bons

Reply

Marsh Posté le 31-07-2008 à 17:37:36    

ça va surtout supprimer les 50 du bas de l'alphabet, sans information de chronologie.
 
mais sinon, euh...
 
delete from table order by tmp limit 50
 
non ?

Reply

Marsh Posté le 31-07-2008 à 19:10:51    

OK je ne savais pas qu'ORDER BY marchait avec DELETE.
 
Je vais tester !

Reply

Marsh Posté le 31-07-2008 à 19:18:53    

avec mysql, oui.
en sql, non.
 
(oracle par exemple, produit carrément une erreur)


Message édité par MagicBuzz le 31-07-2008 à 19:19:12
Reply

Marsh Posté le 31-07-2008 à 19:24:45    

OK merci
 
Je suis en MySQL

Reply

Sujets relatifs:

Leave a Replay

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