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.
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;
ESSAYER
SELECT DISTINCT(Zip),id,name FROM student;
OU
SELECT * FROM student GROUP BY Zip;
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
É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
Y at-il un problème si j'utilise comme ceci ci-dessous?
select distinct Zip,name,id from student;
Essayez d'utiliser
Select Distinct(Zip),id,name group by Zip;