Page 1 sur 1

SELECT, DELETE et LIMIT

Posté : 09 juin 2011, 11:41
par morrissfr
Bonjour,
pour sélectionner un enregistrement précis dans une table (par exemple le cinquième) j'utilise:
"SELECT * FROM $categorie LIMIT 5,1"
Existe-t-il une manière identique pour supprimer un enregistrement? Genre
"DELETE FROM $categorie LIMIT 5,1"?
Merci de votre réponse!
Laurent

Re: SELECT, DELETE et LIMIT

Posté : 09 juin 2011, 12:08
par Mazarini
Bonjour,

En général on utilise la valeur d'une colonne pour faire la sélection.

select * from MaTable where id = 1234
delete from Matable where id = 2345

Il est fréquent d'avoir dans une table un champ de type entier défini en auto-incrément pour faire ca.

Re: SELECT, DELETE et LIMIT

Posté : 09 juin 2011, 12:42
par morrissfr
Oui je sais... mais dans mon script ça m'arrangerait de travailler sur l'ordre de l'enregistrement car les champs sont volatils tels que je les emplois. Je peux donc pas trop me baser sur le contenu d'un champ mais sur son "ordre" dans la table. C'est pour ça que je l'appelle avec "LIMIT 5,1".

Re: SELECT, DELETE et LIMIT

Posté : 09 juin 2011, 13:06
par xTG
Il faut nécessairement avoir les ids.
Donc voici comment procéder :
1) Une requête SELECT récupérant tes ids avec un LIMIT
2) La requête DELETE avec un WHERE id IN (ids_récupérés_avant)

Re: SELECT, DELETE et LIMIT

Posté : 09 juin 2011, 14:01
par Mazarini
Bonjour,

Dans un select sans "order by", il n'y a aucune garantie sur l'ordre des lignes de la table. Dans les cas d'un "order by" il n'y a pas non plus de garantie d'ordre pour 2 lignes ayant les mêmes valeurs des critères de tri.

Re: SELECT, DELETE et LIMIT

Posté : 09 juin 2011, 14:22
par morrissfr
Merci tous les deux. je vais faire comme ça: récupérations des ids (après SELECT) puis DELETE avec ces ids.
Bonne journée!
Laurent.