SQL garder seulement les 5 dernières...
Vroom
-
Vroom -
Vroom -
Bonjour,
J'ai un site d'hébergement d'images et je souhaite faire un système qui affiche les 5 dernières images hébergées d'une IP. Donc j'enregistre l'IP, le nom de l'image et la date.
Sur la page prévu pour afficher les images je fait un WHERE sur l'IP et une LIMIT jusqu'à 5.
En faisant comme ça, ça fonctionne parfaitement, cependant les autres images reste quand même dans la base de donnée. Comment supprimer les autres entrés jusqu'à 5 ?
Merci
J'ai un site d'hébergement d'images et je souhaite faire un système qui affiche les 5 dernières images hébergées d'une IP. Donc j'enregistre l'IP, le nom de l'image et la date.
Sur la page prévu pour afficher les images je fait un WHERE sur l'IP et une LIMIT jusqu'à 5.
En faisant comme ça, ça fonctionne parfaitement, cependant les autres images reste quand même dans la base de donnée. Comment supprimer les autres entrés jusqu'à 5 ?
Merci
A voir également:
- SQL garder seulement les 5 dernières...
- Comment garder le 0 devant les chiffres sur excel - Guide
- Glary utilities 5 - Télécharger - Nettoyage
- Playback error reconnect in 3s (1/5) francais - Forum Box et Streaming vidéo
- 5 bips au démarrage hp ✓ - Forum Matériel & Système
- Wifi livebox 5 mauvais - Forum Fibre Optique
6 réponses
si tu a s bien gerer ta bdd tu peux passer par l'identifaiant si c'est un numero genre tu obtien 355 bah tu fais where id<355-5 tu obtient ton 355 avec une requette qui te conte ton nombre d'occurance
Solution "NOT IN (SELECT)" :
DELETE user_image.* FROM userimage
WHERE user_ip = '127.0.0.1'
AND nom_image NOT IN ( SELECT nom_image FROM userimage WHERE user_ip = '127.0.0.1' ORDER BY date_creation DESC LIMIT 5 )
Solution "LEFT JOIN WHERE pk IS NULL" :
DELETE user_image.* FROM userimage
LEFT JOIN (
SELECT nom_image , user_ip FROM userimage WHERE user_ip = '127.0.0.1' ORDER BY date_creation DESC LIMIT 5
) keep_images USING( user_ip, nom_image )
WHERE keep_images.nom_image IS NULL AND user_ip = '127.0.0.1'
DELETE user_image.* FROM userimage
WHERE user_ip = '127.0.0.1'
AND nom_image NOT IN ( SELECT nom_image FROM userimage WHERE user_ip = '127.0.0.1' ORDER BY date_creation DESC LIMIT 5 )
Solution "LEFT JOIN WHERE pk IS NULL" :
DELETE user_image.* FROM userimage
LEFT JOIN (
SELECT nom_image , user_ip FROM userimage WHERE user_ip = '127.0.0.1' ORDER BY date_creation DESC LIMIT 5
) keep_images USING( user_ip, nom_image )
WHERE keep_images.nom_image IS NULL AND user_ip = '127.0.0.1'
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question