2010-04-29 8 views
1

Im sûr que ce sera assez simple pour un gourou t-sql.Obtenir des résultats uniques dans une requête

J'ai le résultat suivant d'une table

idMain IdSecondary TextValue 
1  1   text1 
1  2   text2 
2  5   text3 
2  6   text5 

Et je veux obtenir la première occurence du idMain seulement.

Le résultat devrait être comme ça.

idMain idSecondary TextValue 
1  1   text1 
2  5   text3 

Comment puis-je y parvenir?

+0

Trouvé un cas similaire ici http://stackoverflow.com/questions/715804/query-to-return-1-instance-of-a-record-with-duplicates et il s'est avéré fonctionner comme un charme . Merci pour les réponses! – Bathan

+0

Notez que la solution suggérée par la réponse acceptée peut ne pas fonctionner pour vous si vous avez un 'TextValue' différent pour le même' idMain', comme indiqué dans votre exemple. Notez la différence entre ce poste, où le même 'ID' a toujours la même valeur. –

Répondre

0

Vous devriez être en mesure de se joindre à une sous requête, comme dans l'exemple suivant. Cela suppose que par « premier » vous voulez dire le plus bas idSecondary:

SELECT t.idMain, sub_t.minSecondary, t.textValue 
FROM your_table t 
JOIN (SELECT idMain, MIN(idSecondary) minSecondary 
     FROM  your_table 
     GROUP BY idMain) sub_t ON (sub_t.idMain = t.idMain); 
0

dépend de ce que vous entendez par « premier ». Normalement, ce mot impliquerait datetime ou commande d'horloge, mais votre table ne dispose pas d'un champ de date ou datetime en elle ...

Vous devez donc préciser ce que vous entendez par « premier »

Si vous n'êtes pas stocké dans la table une valeur qui peut dire au processeur de requête comment commander deux enregistrements à distinguer entre ce que vous entendez par le "premier" de l'autre, alors vous n'avez pas de chance ....

en supposant que vous avez un tel champ, (disons que c'est IdSecondary à cause d'un exemple - puisque vos résultats de l'échantillon ressemblent à ce qui est le cas), alors ce que vous devez faire est

Select * From Table a 
Where IdSecondary= (Select Min(IdSecondary) 
        From Table 
        Where idMain = a.idMain) 
Questions connexes