2010-11-08 8 views
4

j'ai une table avec des colonnes multiples mais j'ai besoin seulement 2 id select, département de TBLselect distinct et une autre colonne de l'identifiant

si je veux utiliser distincte - comment puis-je faire cela? cela ne fonctionne pas: sélectionnez idm département distinct de TBL

+1

Vous n'avez pas fourni suffisamment d'informations pour une réponse. Vous devriez poster quelques exemples de données. – Fionnuala

Répondre

3

Utilisez les éléments suivants pour obtenir des lignes distinctes:

select distinct id, department 
from tbl 

Cependant, vous ne pouvez pas simplement obtenir des services distincts si certains ministères ont plusieurs numéros d'identification - vous avez besoin de savoir lequel des ID multiples que vous voulez (max? min? quelque chose d'autre?).

+0

Je veux que le distinct soit seulement pour le département et que les colonnes restantes que j'aurai besoin seront avilables pour employer plus tard donc je dois obtenir la colonne d'identification –

+0

@ YGJ - Chaque département a-t-il juste un Id, ou multiple ? – Oded

+0

Je ne vois rien de mal à cette réponse, c'est le mieux que l'on puisse faire étant donné le manque d'information du PO. – Fionnuala

0

Voulez-vous un groupe en résolvant votre problème?

select id, department from tbl group by id 
+0

non, pas dans msaccess (ou bases de données autres que mysql). le SQL suggéré renvoie une erreur dans les bases de données qui suivent la norme SQL en ce qui concerne GORUP BY. – Unreason

+0

Désolé, je voulais écrire: sélectionnez id, département du groupe tbl par id, département –

2

DISTINCT a besoin pour fonctionner sur toutes les colonnes pour la même raison pour laquelle GROUP BY doit inclure toutes les colonnes (qui ne disposent pas des fonctions d'agrégation fonctionnent sur eux) et qui est que dans le cas où vous voulez appliquer DISTINCT à la resultset suivante

id department 
---------------- 
1  one 
2  one 
3  one 
4  two 

alors même si SELECT id, DISTINCT department FROM table_name a été accueilli (et il est dans certaines bases de données, par exemple MySQL peut faire groupe par département et ne pas inclure id dans le GROUP BY) alors vous finiriez avec situation non définie:

id department 
---------------- 
?  one 
4  two 

Ce qui devrait aller au lieu de ? - 1, 2 ou 3?

2
SELECT * FROM Table c1 
WHERE ID = (SELECT MIN(ID) FROM Table c2 
    WHERE c1.department = c2.department) 
Questions connexes