Tengo una tabla MySQL que contiene el siguiente tipo de información:
Date product
2011-12-12 azd
2011-12-12 yxm
2011-12-10 sdx
2011-12-10 ssdd
Aquí hay un ejemplo de un script que uso para obtener datos de esta tabla:
<?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);
?>
Este script muestra todas las fechas de la tabla, p. Ej.
12.dec 2011
12.dec.2011
10.dec.2011
10.dec.2011
Me gustaría mostrar solo fechas únicas, p. Ej.
12.dec.2011
10.dec.2011

Respuestas:
Use el operador DISTINCT en MySQL:
fuente
DISTINCTes que solo devuelve ese campo ... así que si desea el registro completo, DISTINCT no tiene valor (a menos que sea un campo de identificación, y puede hacer una segunda consulta donde identifique en esa lista). Sin embargo, buenas noticias, si tiene múltiples resultados duplicados como resultado de UNIRSE, puede hacer un GROUP BY y obtener los resultados completos filtrados.utilizar
entonces MySQL elimina duplicados
Por cierto: el uso de nombres de columna explícitos
SELECTusa menos recursos en PHP cuando obtiene un gran resultado de MySQLfuente
Use esta consulta para obtener valores
fuente
datepero diferentedescription. Usando el comando anterior se muestran distintasdates, pero sólo ladescriptiondel primer elemento encontrado.GROUP BY date,description.El resto son casi correctos, excepto que deben ordenar por Fecha DESC
fuente
DISTINCTSiempre es una opción correcta para obtener valores únicos. También puedes hacerlo alternativamente sin usarlo. Eso esGROUP BY. Que simplemente se agrega al final de la consulta y seguido por el nombre de la columna.fuente
Otra
DISTINCTrespuesta, pero con múltiples valores:fuente
Use algo como esto en caso de que también desee generar detalles de productos por fecha como JSON.
Pruébelo en SQL Fiddle
fuente
Hay una palabra clave específica para lograr lo mismo.
fuente
Depende de lo que necesites.
En este caso sugiero:
porque hay pocos campos y el tiempo de ejecución de
DISTINCTes menor que la ejecución deGROUP BY.En otros casos, por ejemplo, donde hay muchos campos, prefiero:
fuente