web-dev-qa-db-fra.com

Comment obtenir un enregistrement distinct de la table mysql?

J'ai une table étudiant comme ça

id | name | Zip 
1  | abc  | 1234
2  | xyz  | 4321
3  | asd  | 1234

Je veux obtenir tous les enregistrements, mais le code postal ne doit pas être répété. Donc, dans le cas d'enregistrements de table ci-dessus, les enregistrements n ° 1 et 2 doivent être récupérés. L'enregistrement n ° 3 ne sera pas récupéré car il possède un code postal déjà enregistré dans l'enregistrement n ° 1.

13
Student
SELECT DISTINCT fieldName FROM tableName;

La requête suivante sélectionnera uniquement un champ "Zip" distinct.

SELECT DISTINCT Zip FROM student;

SELECT * FROM tableName GROUP BY fieldName;

La requête suivante sélectionnera tous les champs avec un champ Zip distinct.

SELECT * FROM student GROUP BY Zip;
35
Mukesh Chapagain

ESSAYER

 SELECT DISTINCT(Zip),id,name FROM student;

OU 

  SELECT * FROM student GROUP BY Zip;
6
diEcho

Bien que dans MySQL, vous pouvez vous en tirer avec:

SELECT *
FROM student
GROUP BY Zip 

Je choisirais:

SELECT * 
FROM student t
  JOIN 
    ( SELECT MIN(id) AS minid
      FROM student
      GROUP BY Zip
    ) AS grp
    ON grp.minid = t.id
3
ypercubeᵀᴹ

Étant donné que les autres colonnes ont sans doute un intérêt particulier ...

 SELECT y.*
 FROM yourTable y,
 (SELECT MIN(y2.id)
  FROM yourTable y2
  GROUP BY y2.Zip) ilv
 WHERE ilv.id=y.id;

(ou vous pouvez utiliser le astuce max-concat )

update

Oracle a maintenant supprimé l'astuce de concat max de la page liée - mais c'est décrit ailleurs sur le internet

2
symcbean

Y at-il un problème si j'utilise comme ceci ci-dessous? 

select distinct Zip,name,id from student;
0
sushil bharwani

Essayez d'utiliser

Select Distinct(Zip),id,name group by Zip;
0
Deepesh