2009-11-16 5 views
0

Il existe des groupes comme celui-ci;Comment puis-je utiliser une requête select pour obtenir le moins d'une valeur pour chaque seconde valeur unique?

USER_ID SEQ_ID NAME 
1  2  Armut 
1  3  Elma 
1  4  Kiraz 
2  1  Nar 
2  2  Uzum 
4  3  Sheftali 
4  4  Karpuz 
4  5  Kavun 

Après une requête de sélection, je veux seulement voir;

USER_ID SEQ_ID NAME 
1  2  Armut 
2  1  Nar 
4  3  Karpuz 

C'est-à-dire, je veux la ligne avec le moins SEQ_ID pour chaque USER_ID. Quelle requête SQL me donnera ce résultat?

Meilleures salutations

+0

Qu'est-ce que? Un SEQ_ID aléatoire pour chaque USER_ID distinct? – Joey

+3

Veuillez décrire un peu plus. Quel est le modèle ici. C'est le poing de l'utilisateur un et deux, mais le second de l'utilisateur quatre. – idstam

+0

(1) Les devoirs? (2) Pouvez-vous au moins textuellement (si vous n'utilisez pas SQL) décrire comment la table de résultats a été créée? – Stephan202

Répondre

4

Attend pour moi comme il devrait être:

SELECT USER_ID, MIN(SEQ_ID) AS SEQ_ID, NAME 
FROM table 
GROUP BY USER_ID, NAME 
ORDER BY USER_ID; 
+1

Cela ne fonctionne pas pour le groupe avec USER_ID 4. Le plus petit SEQ_ID serait 3 là. – Joey

+0

@Greg: powertip - indente le texte avec quatre espaces pour qu'il soit formaté en code. En cliquant sur le point d'interrogation orange que vous voyez dans la barre d'outils lors de la publication, vous accédez à un document décrivant cette mise en forme et d'autres. – outis

+0

Pour référence, voici le doc: http://stackoverflow.com/editing-help – outis

9
SELECT USER_ID, SEQ_ID, NAME 
    FROM table 
    WHERE NAME IN ('Armut', 'Nar', 'Karpuz') 
    ORDER BY USER_ID 

Si vous avez quelque chose d'autre à l'esprit, s'il vous plaît préciser votre question.

+5

Nice. C'est le rasoir d'Occam. – Manu

+0

Sauf que je me suis trompé au début. J'ai oublié la clause 'ORDER BY'. – outis

Questions connexes