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
DISTINCT
es 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
SELECT
usa menos recursos en PHP cuando obtiene un gran resultado de MySQLfuente
Use esta consulta para obtener valores
fuente
date
pero diferentedescription
. Usando el comando anterior se muestran distintasdate
s, pero sólo ladescription
del primer elemento encontrado.GROUP BY date,description
.El resto son casi correctos, excepto que deben ordenar por Fecha DESC
fuente
DISTINCT
Siempre 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
DISTINCT
respuesta, 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
DISTINCT
es menor que la ejecución deGROUP BY
.En otros casos, por ejemplo, donde hay muchos campos, prefiero:
fuente