Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1393 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Mysql] DELETE et conserver un nombre fixe de lignes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Mysql] DELETE et conserver un nombre fixe de lignes

n°2072549
Er Dehydel
Demain j'arrête de boire
Posté le 29-04-2011 à 11:11:22  profilanswer
 

Bonjour,
 
Je cherche à réaliser une requête sous mysql qui conserverait un nombre fixe de lignes lors d'un Delete - concrètement "Ne garder que les 20 premières lignes et supprimer le reste".
 
J'ai essayé ceci :
 

Code :
  1. DELETE FROM vtiger_account
  2. WHERE accountid NOT IN
  3. (SELECT accountid FROM vtiger_account
  4. LIMIT 20)


 
Mais mysql il gère pas (encore) les Limits dans les sous-requêtes [:cerveau manust]
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
 
Auriez-vous une solution compatible pour mysql ?  
 
D'avance, merci


---------------
À défaut des dragons il me reste les moulins
mood
Publicité
Posté le 29-04-2011 à 11:11:22  profilanswer
 

n°2072560
actualinet
Posté le 29-04-2011 à 11:52:42  profilanswer
 

Bonjour :)  
Quelle est ta version de MySQL ? Il me semble qu'a partir de la version 4.1 ta requête devrait fonctionner.

n°2072603
Er Dehydel
Demain j'arrête de boire
Posté le 29-04-2011 à 13:15:46  profilanswer
 

Bonjour Actualinet,
 
La version que j'utilise est plutôt récente, il s'agit de la 5.5.8.


---------------
À défaut des dragons il me reste les moulins
n°2072621
actualinet
Posté le 29-04-2011 à 13:44:49  profilanswer
 

Bizarre
 
sur ce site : http://mysql.bigresource.com/Track/mysql-boUmSoYU/
 
il y a cette requête qui ressemble à la tienne, à part le order by:

Code :
  1. DELETE FROM yourtable WHERE somekey NOT IN
  2. (SELECT somekey FROM yourtable
  3. ORDER BY timecolumn DESC LIMIT 10)


 
C'est un vieux post de 2005, je ne sait pas trop ce que ça vaut...

n°2072717
Er Dehydel
Demain j'arrête de boire
Posté le 29-04-2011 à 14:58:42  profilanswer
 

En fait, même si j'arrive à faire passer mon LIMIT d'une façon ou d'une autre, la requête ne sera pas correcte parce que MySQL interdit proprement l'appel d'une même table dans une sous requête lors d'un update.  
 
Pour contourner le problème avec UPDATE il suffit de passer par des alias mais par contre avec DELETE c'est une autre histoire... donc me voilà retombé sur un autre os [:jeanlucpicard]
 
Sauf qu'avec un petit peu de bricole j'y suis finalement arrivé ! avec l'utilisation du LIMIT aussi :)
 

Code :
  1. DELETE
  2. FROM vtiger_account
  3. WHERE accountid NOT IN
  4. (SELECT accountid 
  5. FROM (SELECT accountid FROM vtiger_account LIMIT 20) AS V2)


 
Traitement pas trop lent avec ça : 3331 ligne(s) supprimée(s). ( Traitement en 0.5180 sec. )
 
Merci pour ton aide et attention  :hello:


---------------
À défaut des dragons il me reste les moulins

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Mysql] DELETE et conserver un nombre fixe de lignes

 

Sujets relatifs
problème de trie avec mysql et fonction mt_rand() ! help memysql- XAMPP
[PHP/MYSQL] Sécurité suffisante ?SGBD avec mysql php
Image mouvante derrière une image fixeNombre sur XX digit
MySQL : grouper les entrées puis les trierMenu Dynamique recursif php/mysql
Galère requete MySQL 
Plus de sujets relatifs à : [Mysql] DELETE et conserver un nombre fixe de lignes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR