En général, je préfère aborder ces cas avec une jointure à une sous requête, comme dans l'exemple suivant:
SELECT s.id, s.school, s.address, s.city, s.phone, s.email, s.fax
FROM schools s
JOIN (SELECT MAX(id) as max_id
FROM schools
GROUP BY city) sub_s ON (sub_s.max_id = s.id);
Le JOIN
est pratiquement le résultat restreindre mis aux entrées avec des villes distinctes. Cela suppose également que vous voulez sélectionner l'entrée avec l'ID le plus élevé lorsque vous avez plusieurs entrées pour chaque ville. Si vous préférez choisir l'ID le plus bas, vous pouvez utiliser la fonction d'agrégat MIN()
dans la sous-requête au lieu de MAX()
.
Quels sont les critères que vous souhaitez utiliser pour choisir l'entrée de chaque ville est sélectionnée? – Syntactic
La plupart des entrées de la même ville n'auraient-elles pas le même état? Pouvez-vous élaborer, s'il vous plaît? – Syntactic
Ok, prenez ceci comme les 10 États ont chacun 5-6 villes chacun. J'ai simplement besoin de sélectionner une entrée de chaque ville (strictement pas plus de 1 de 50 à 100 entrées de chaque ville) au hasard. – ArK