J'ai une table MySQL qui contient le type d'informations suivant:
Date product
2011-12-12 azd
2011-12-12 yxm
2011-12-10 sdx
2011-12-10 ssdd
Voici un exemple de script que j'utilise pour obtenir des données de cette table:
<?php
$con = mysql_connect("localhost","username","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("db", $con);
$sql=mysql_query("SELECT * FROM buy ORDER BY Date");
while($row = mysql_fetch_array($sql))
{
echo "<li><a href='http://www.website/". $row['Date'].".html'>buy ". date("j, M Y", strtotime($row["Date"]))."</a></li>";
}
mysql_close($con);
?>
Ce script affiche chaque date du tableau, par exemple
12.dec 2011
12.dec.2011
10.dec.2011
10.dec.2011
Je souhaite afficher uniquement des dates uniques, par exemple
12.dec.2011
10.dec.2011
Réponses:
Utilisez l' opérateur DISTINCT dans MySQL:
la source
DISTINCT
est qu'il ne renvoie que ce seul champ ... donc si vous voulez tout l'enregistrement, le DISTINCT ne vaut rien (sauf s'il s'agit d'un champ id, et vous pouvez faire une deuxième requête où id IN dans cette liste). Bonne nouvelle, cependant, si vous avez plusieurs résultats en double à la suite d'un JOIN, vous pouvez faire un GROUP BY et filtrer les résultats complets.utilisation
donc MySQL supprime les doublons
BTW: l'utilisation de noms de colonnes explicites dans
SELECT
utilise moins de ressources en PHP lorsque vous obtenez un résultat volumineux de MySQLla source
Utilisez cette requête pour obtenir des valeurs
la source
date
mais différentsdescription
. En utilisant la commande ci - dessus va montrer distinctesdate
s, mais seulementdescription
du premier article trouvé.GROUP BY date,description
.Les autres sont presque corrects, sauf qu'ils doivent être classés par Date DESC
la source
DISTINCT
est toujours un bon choix pour obtenir des valeurs uniques. Vous pouvez également le faire alternativement sans l'utiliser. VoilàGROUP BY
. Qui a simplement ajouté à la fin de la requête et suivi du nom de la colonne.la source
Une autre
DISTINCT
réponse, mais avec plusieurs valeurs:la source
Utilisez quelque chose comme ceci au cas où vous souhaiteriez également afficher les détails des produits par date au format JSON.
Essayez-le dans SQL Fiddle
la source
Il existe un mot-clé spécifique pour y parvenir.
la source
Dépend de ce dont vous avez besoin.
Dans ce cas, je suggère:
car il y a peu de champs et le temps d'exécution de
DISTINCT
est inférieur à celui deGROUP BY
.Dans d'autres cas, par exemple où il y a beaucoup de champs, je préfère:
la source