255 votes

MySQL sélectionne une colonne DISTINCT, avec les autres colonnes correspondantes

 ID   FirstName   LastName
1      John        Doe
2      Bugs        Bunny
3      John        Johnson
 

Je veux sélectionner DISTINCT des résultats de la FirstName colonne, mais j'ai besoin correspondant ID et LastName .

L'ensemble de résultats ne doit afficher qu'un John , mais avec un ID de 1 et un LastName de Doe.

251voto

diEcho Points 22385

essayez cette requête

  SELECT ID, FirstName, LastName FROM table GROUP BY(FirstName)
 

97voto

fyrye Points 759

ATTENTION

Avec MySQL, GROUP BY ne donnera pas toujours les résultats attendus avec ORDER BY La meilleure méthode d'implémentation pour garantir les résultats attendus consiste à filtrer la portée de l'ensemble de résultats à l'aide d'une sous-requête similaire.

nom_table

 ID   FirstName   LastName
1      John        Doe
2      Bugs        Bunny
3      John        Johnson
 

Question

 SELECT * FROM (
   SELECT * FROM table_name ORDER BY ID DESC
) AS t1
GROUP BY FirstName

#Results
ID   FirstName   LastName
2      Bugs        Bunny
3      John        Johnson
 

Contre

 SELECT * FROM table_name GROUP BY FirstName ORDER BY ID DESC

#Results
ID   FirstName   LastName
2      Bugs        Bunny
1      John        Doe
 

79voto

Brian Driscoll Points 10188

Le mot clé DISTINCT ne fonctionne pas vraiment comme vous l'espériez. Lorsque vous utilisez SELECT DISTINCT col1, col2, col3 vous sélectionnez en fait tous les tuples {col1, col2, col3} uniques.

24voto

sarath Points 119
SELECT ID,LastName 
From TABLE_NAME 
GROUP BY FirstName 
HAVING COUNT(*) >=1

-3voto

Monty Points 641
 SELECT DISTINCT(firstName), ID, LastName from tableName GROUP BY firstName
 

Serait le meilleur pari IMO.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X