Salut
Comment faire pour mettre a jour un champ d une table pour seulement les n premier de la table en fonction d un classement de la colonne ?
thx ++
Version imprimable
Salut
Comment faire pour mettre a jour un champ d une table pour seulement les n premier de la table en fonction d un classement de la colonne ?
thx ++
Il nous manque un peu d'éléments pour t'aider.
Qu'entends-tu par champ (en opposition à colonne) ?
En fait, j aimerais faire un upate sur un champs (field, colonne) mais seulement sur les 10 derniers (par exemple) enregistrement , les enregistrement etant classe par le meme champs.
Bonjour,
Je serais tenté de dire que ça dépend du SGBD...
ced
Salut
j utilise SQlite .
:mrgreen:
Dis moi si je me trompe
Tu souhaites mettre a jour les données d'un champ sur lequel tu fais un tri en gros un ORDER BY ton champ ???
oui
il faudrait que tu les isoles via une clause WHERE et des jointures...
Sinon je pense à un truc super sale a évité car loin de respecter les règles
ca serait de faire mettre dans le WHERE un ROWNUM < au nombre de ligne a mettre à jour mais je le rappel c'est contraire à l'étique et aux normes… :oops:
Biensur avant de tenter la solution crade je te conseil de faire une copie de ta table histoire de ne pas perdre tes données.
A tes risques et périles !
j avais essaye comme cela :
mais cela ne marche pasCode:
1
2 update maTable set ffield ="" where (Select * from maTable where 1 order by ffield desc limit 10);
:bug:
Normal le code est syntaxiquement faux :roll:Citation:
Code:
1
2
3
4
5 UPDATE maTable SET ffield ="" WHERE (SELECT * FROM maTable WHERE 1 ORDER BY ffield DESC LIMIT 10);
Ca devrait fonctionner un peu mieux mais ca reste moche !Code:
1
2
3
4
5 UPDATE maTable B SET ffield ="" WHERE EXISTS (SELECT * FROM maTable A WHERE toutesclesdeA = toutesclesdeB ORDER BY ffield DESC LIMIT 10);
C est bon j ai Trouve !!!
Merci tlm !:yaisse2:
Finalement petit probleme:
Qu y a t il de faux ?
elle me met que a null que 8 enregistrements ...alors que le select retourne bien 57 enregistrements :evilred::evilred::evilred:Code:
1
2
3
4
5 UPDATE maTable SET LastUsedDateTime = NULL WHERE FileName = ( SELECT FileName FROM maTable P WHERE 1 ORDER BY P.LastUsedDateTime DESC LIMIT 57 );
Peut être que cela fonctionnerait mieux comme ça ?
Code:WHERE FileName IN (SELECT ...
Est ce que le probleme pourrait venir du fait que la table en question a une cle unique sur 2 colonnes?