Le HAVING
La clause est destinée à être utilisée sur des données agrégées lorsque vous regroupez des lignes à l'aide de GROUP BY
clause. Puisque vous opérez sur chaque ligne individuellement, vous devez remplacer HAVING
avec un WHERE
clause. Voir cet exemple
pour plus de détails.
L'utilisation de HAVING sur des colonnes non agrégées dans votre liste SELECT est un comportement non standard pris en charge par MySQL, mais un comportement sur lequel il ne faut pas s'appuyer. Même la référence MySQL le décourage :
En aparté :si vous transmettez des arguments de l'utilisateur à votre requête (avec le %s
), assurez-vous d'examiner les déclarations préparées. Sinon, vous pourriez avoir une faille de sécurité flagrante entre vos mains.