Sybase SQL Select Distinct Fondé sur Plusieurs Colonnes avec un ID
Je suis en train d'interroger un serveur sybase pour obtenir des exemples de différents types de données que nous détenons à des fins de test.
J'ai une table qui ressemble à celle ci-dessous (abstraite)
Animals table:
id | type | breed | name
------------------------------------
1 | dog | german shepard | Bernie
2 | dog | german shepard | James
3 | dog | husky | Laura
4 | cat | british blue | Mr Fluffles
5 | cat | other | Laserchild
6 | cat | british blue | Sleepy head
7 | fish | goldfish | Goldie
Comme je l'ai mentionné, je veux un exemple de chaque type, donc pour le tableau ci-dessus serait comme un ensemble de résultats similaires (en réalité, je veux juste l'ID):
id | type | breed
---------------------------
1 | dog | german shepard
3 | dog | husky
4 | cat | british blue
5 | cat | other
7 | fish | goldfish
J'ai essayé plusieurs combinaisons de ces requêtes, comme ci-dessous, mais ils sont soit non valide SQL (sybase) ou de renvoyer des résultats non valides
SELECT id, DISTINCT ON type, breed FROM animals
SELECT id, DISTINCT(type, breed) FROM animals
SELECT id FROM animals GROUP BY type, breed
J'ai trouvé d'autres questions telles que SELECT DISTINCT sur une colonne mais cela ne traitent qu'avec une seule colonne
Avez-vous une idée de comment mettre en œuvre cette requête?
OriginalL'auteur Pez Cuckow | 2012-09-11
Vous devez vous connecter pour publier un commentaire.
Vous devrez peut-être utiliser la fonction d'agrégation
max
oumin
pour la colonne ID. Il sera de retour un seul ID de colonnes groupées.EDIT:
D'autres façons de le faire:
Avec avoir et de la fonction d'agrégation
Avec avoir et de les agréger sous-requête
J'ai trouvé d'autres façons de le faire. Je ne suis pas sûr si elle va travailler plus vite, peut-être la deuxième proposition. Peut-être la première suggestion est plus lisible. J'ai édité le post.
OriginalL'auteur Parado
Essayer cela et laissez-moi savoir si cela fonctionne:
Vous pourriez avoir à jouer avec
max()
Le choix arbitraire ici est max(), mais vous pouvez arbitrairement d'utiliser la fonction min() à la place.
max()
renvoie la plus grande valeur pour que les colonnes,min()
la plus petiteOriginalL'auteur Edward Chapman