Impossible de sélectionner tous les champs avec DISTINCT dans la requête MySQL
Lorsqu'ils tentent d'éliminer les lignes en double à l'aide du mot-clé DISTINCT, les utilisateurs peuvent rencontrer des limitations dans en sélectionnant tous les champs dans leurs requêtes MySQL. Cet article aborde le problème et propose une solution.
Contexte
Le mot clé DISTINCT identifie et renvoie uniquement les lignes uniques dans un ensemble de résultats, en fonction de la ou des colonnes spécifiées. ). Cependant, cela peut entraîner des erreurs lorsqu'il est combiné avec une instruction select-all (*).
Considérez la requête suivante, qui sélectionne uniquement la colonne ticket_id dans la table temp_tickets et la classe par ticket_id :
mysql_query("SELECT DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")
Cette requête s'exécutera avec succès et renverra des valeurs ticket_id distinctes. Cependant, la requête suivante, qui tente de sélectionner tous les champs et d'utiliser DISTINCT :
mysql_query("SELECT * , DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")
entraînera une erreur. En effet, DISTINCT ne peut être appliqué qu'à une seule colonne.
Solution
Pour sélectionner tous les champs et utiliser DISTINCT pour éliminer les doublons, modifiez la requête comme suit :
SELECT ticket_id, <other_field>, <other_field> FROM temp_tickets GROUP BY ticket_id ORDER BY ticket_id
Dans cette requête, la clause GROUP BY est utilisée en conjonction avec DISTINCT pour regrouper les résultats par la colonne ticket_id. Pour chaque ticket_id unique, une seule ligne sera renvoyée, contenant les dernières valeurs pour les champs spécifiés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!