Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je sélectionner uniquement la première correspondance distincte d'un champ dans MySQL ?

DISTINCT ne fonctionne pas de cette façon, les valeurs doivent être distinctes dans toutes les colonnes renvoyées.

Vous pouvez toujours utiliser une fonction d'agrégation sur le hash fonction et GROUP BY name qui renverra un hash valeur pour chaque name :

SELECT name, min(hash) hash
FROM my_table 
WHERE name LIKE '%An%' 
GROUP BY name;

Voir SQL Fiddle avec démo .

Remarque : en utilisant la fonction d'agrégation avec le GROUP BY s'assurera que vous retournerez toujours la valeur attendue pour le hash colonne. Lorsque vous ne faites pas de GROUP BY ou agréger les éléments dans le SELECT liste, vous pourriez renvoyer des résultats inattendus. (voir Extensions MySQL pour GROUP BY )

À partir de la documentation MySQL :