Eu tenho uma tabela MySQL que contém o seguinte tipo de informação:
Date product
2011-12-12 azd
2011-12-12 yxm
2011-12-10 sdx
2011-12-10 ssdd
Aqui está um exemplo de um script que eu uso para obter dados desta tabela:
<?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 exibe todas as datas da tabela, por exemplo
12.dec 2011
12.dec.2011
10.dec.2011
10.dec.2011
Gostaria de exibir apenas datas únicas, por exemplo
12.dec.2011
10.dec.2011
Respostas:
Use o operador DISTINCT no MySQL:
fonte
DISTINCT
é que ele retorna apenas um campo ... então, se você deseja o registro inteiro, o DISTINCT não vale nada (a menos que seja um campo de identificação e você pode fazer uma segunda consulta onde identifique nessa lista). Boas notícias, no entanto, se você tiver vários resultados duplicados como resultado de um JOIN, poderá fazer um GROUP BY e obter os resultados completos filtrados.usar
então o MySQL remove duplicatas
BTW: o uso de nomes explícitos de coluna
SELECT
usa menos recursos no PHP quando você obtém um grande resultado do MySQLfonte
Use esta consulta para obter valores
fonte
date
mas diferentesdescription
. Usando o comando acima irá mostrar distintasdate
s, mas apenas odescription
do primeiro item encontrado.GROUP BY date,description
.O restante está quase correto, exceto que eles devem ordenar por Data DESC
fonte
DISTINCT
é sempre uma escolha certa para obter valores únicos. Além disso, você pode fazer isso alternativamente sem usá-lo. É issoGROUP BY
. Que simplesmente foi adicionado no final da consulta e seguido pelo nome da coluna.fonte
Outra
DISTINCT
resposta, mas com vários valores:fonte
Use algo assim, caso você também queira gerar detalhes dos produtos por data como JSON.
Experimente no SQL Fiddle
fonte
Existe uma palavra-chave específica para alcançar o mesmo.
fonte
Depende do que você precisa.
Nesse caso, sugiro:
porque existem poucos campos e o tempo de execução de
DISTINCT
é menor que a execução deGROUP BY
.Em outros casos, por exemplo, onde existem muitos campos, prefiro:
fonte