Utilisation d’un LIMIT dans une sous-requête avec MySQL

Si vous avez déjà essayé d’utiliser un LIMIT dans une sous-requête vous avez très certainement rencontré ce message ci:

This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME subquery’

Heureusement, il y a la possibilité de contourner cela selon une astuce similaire à celle présentée dans un article précédent.

Lire la suite

Suppression de tout sauf un doublon dans une table

Pour un site j’ai implémenté une table pour faire lien entre l’id d’un profil et celui des utilisateurs qui visitent ce profil.

id int(10) UNSIGNED Non Aucun AUTO_INCREMENT
profile_id int(10) UNSIGNED Non 0
visitor_id int(10) UNSIGNED Non 0
date_visited timestamp Non CURRENT_TIMESTAMP

M’étant limité à une requête qui créé une paire ou qui mets à jour un timestamp si l’enregistrement existe, je me suis rendu compte que celle-ci ne se comportait pas comme prévu et produisait des doublons. En attendant de corriger celle-ci, il me fallait donc trouver une solution pour nettoyer la table en enlevant tout sauf un doublon pour chaque paire.

Lire la suite

Maintenir une liste d’adresses emails indisponibles

Contrairement à un serveur SMTP, la fonction mail de PHP ne supporte pas la confirmation à la réception ce qui rend difficile la tâche de déterminer si une adresse est valide. Certains hébergeurs comme OVH renvoient périodiquement une liste d’adresses produisant des erreurs (boite indisponible, adresse inconnue…). Voici comment constituer un script pour traiter ce genre de liste.

Lire la suite

Ne rien modifier en cas de DUPLICATE KEY

Dans certains cas de figure on peut souhaiter d’insérer un record et n’effectuer aucun changement si les informations sont déjà présentes.

Un exemple concret est l’entretien d’une table d’adresses email erronnées qui peut être utile lorsqu’un hébergeur a pour politique de bloquer les envois pour éviter le spam.

Lire la suite