Sélectionnez une ligne sans doublon
Dans la table mysql info
j'ai :
Id , Nom , Ville , date , statut
Je veux sélectionner tous les noms de "info"
Faire la requête
$query = mysql_query("SELECT name FROM info WHERE status = 1 ORDER BY id")
or die(mysql_error());
while ($raw = mysql_fetch_array($query))
{
$name = $raw["name"];
echo ''.$name.'<br>';
}
Eh bien, le résultat est qu'il retourne toutes les entrées.
Je veux faire écho à toutes les entrées sans doublons.
Disant: sous raw "nom", nous avons inséré le nom de "Jean" 10 fois.
Je veux faire écho à une seule fois.
Est-ce possible?
source d'informationauteur Darius
Vous devez vous connecter pour publier un commentaire.
C'est assez simple:
Le mot clé SQL
DISTINCT
fait le tour.essayez d'utiliser ce que votre requête:
pour obtenir des noms distincts
ou que d'autres ont suggéré l'utilisation
GROUP BY
Je pense que le premier est plus intuitif et il n'y a pas de différence de performances entre les deux
MODIFIER
que l'OP veut également le nombre de noms ici, nous allons:
vous pouvez
ORDER BY
name
oun_names
en fonction de ce que vous avez besoinChangement
à
Observer que
GROUP BY
a été ajouté. Plus sur le groupe par http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-columns.htmlEdit:
pour le nom avec le numéro des apparences essayer
ajouter
GROUP BY name
à votre SQL de Tresorerie - cela ne fera que ramener un de chaque entrée de la colonne nomutilisation
GROUPE PAR nom
déclaration
Cela fonctionne pour moi, retourne les noms de table pour une base de données.
Disons que vous êtes à l'envoi en masse de sms et que vous ne souhaitez pas envoyer le même message deux fois pour le même type, John . Ce que j'ai découvert , c'est qu'en utilisant l'astuce de GROUP BY et ORDER BY dans le même temps, fonctionne parfaitement . Mais je ne dis pas que c'est la meilleure façon . Voici comment u peut utiliser
EDIT: Cela est important à noter, lorsque vous avez besoin de plus alors seule colonne, et ces valeurs-là sont uniques par ligne, puis l'DISTINCTES n'était pas aider.
$sql="SELECT DISTINCT nom DE l'état =1 GROUP BY nom ORDER BY nom";