Ich habe eine MySQL-Tabelle, die die folgenden Informationen enthält:
Date product
2011-12-12 azd
2011-12-12 yxm
2011-12-10 sdx
2011-12-10 ssdd
Hier ist ein Beispiel für ein Skript, mit dem ich Daten aus dieser Tabelle abrufe:
<?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);
?>
Dieses Skript zeigt jedes Datum aus der Tabelle an, z
12.dec 2011
12.dec.2011
10.dec.2011
10.dec.2011
Ich möchte nur eindeutige Daten anzeigen, z
12.dec.2011
10.dec.2011
Antworten:
Verwenden Sie den DISTINCT- Operator in MySQL:
quelle
DISTINCT
ist, dass nur dieses eine Feld zurückgegeben wird. Wenn Sie also den gesamten Datensatz möchten, ist DISTINCT wertlos (es sei denn, es handelt sich um ein ID-Feld, und Sie können eine zweite Abfrage durchführen, bei der ID in dieser Liste enthalten ist). Gute Nachrichten: Wenn Sie aufgrund eines JOIN mehrere doppelte Ergebnisse haben, können Sie ein GROUP BY durchführen und die vollständigen Ergebnisse filtern lassen.verwenden
MySQL entfernt also Duplikate
Übrigens: Die Verwendung expliziter Spaltennamen in
SELECT
verwendet weniger Ressourcen in PHP, wenn Sie ein großes Ergebnis von MySQL erhaltenquelle
Verwenden Sie diese Abfrage, um Werte abzurufen
quelle
date
aber unterschiedlichdescription
. Wenn Sie den obigen Befehl verwenden, werden verschiedenedate
s angezeigt, jedoch nur diedescription
des ersten gefundenen Elements.GROUP BY date,description
.Der Rest ist fast korrekt, außer sie sollten nach Datum DESC bestellen
quelle
DISTINCT
ist immer die richtige Wahl, um eindeutige Werte zu erhalten. Sie können es auch alternativ tun, ohne es zu verwenden. Das istGROUP BY
. Welches hat einfach am Ende der Abfrage hinzugefügt und gefolgt von dem Spaltennamen.quelle
Eine andere
DISTINCT
Antwort, aber mit mehreren Werten:quelle
Verwenden Sie so etwas, wenn Sie auch Produktdetails pro Datum als JSON ausgeben möchten.
Probieren Sie es in SQL Fiddle aus
quelle
Es gibt ein bestimmtes Schlüsselwort, um dasselbe zu erreichen.
quelle
Kommt darauf an was du brauchst.
In diesem Fall schlage ich vor:
weil es nur wenige Felder gibt und die Ausführungszeit von
DISTINCT
niedriger ist als die Ausführung vonGROUP BY
.In anderen Fällen, zum Beispiel wenn es viele Felder gibt, bevorzuge ich:
quelle