У меня есть таблица MySQL, которая содержит следующий тип информации:
Date product
2011-12-12 azd
2011-12-12 yxm
2011-12-10 sdx
2011-12-10 ssdd
Вот пример сценария, который я использую для получения данных из этой таблицы:
<?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);
?>
Этот скрипт отображает каждую дату из таблицы, например
12.dec 2011
12.dec.2011
10.dec.2011
10.dec.2011
Я хотел бы отображать только уникальные даты, например
12.dec.2011
10.dec.2011
Ответы:
Используйте оператор DISTINCT в MySQL:
источник
DISTINCT
заключается в том, что он возвращает только это одно поле ... поэтому, если вам нужна вся запись, DISTINCT бесполезен (если только это не поле id, и вы можете выполнить второй запрос, где id IN в этом списке). Хорошие новости, однако, если у вас есть несколько повторяющихся результатов в результате JOIN, вы можете выполнить GROUP BY и отфильтровать полные результаты.использование
поэтому MySQL удаляет дубликаты
Кстати: использование явных имен столбцов
SELECT
в PHP использует меньше ресурсов, когда вы получаете большой результат от MySQLисточник
Используйте этот запрос, чтобы получить значения
источник
date
но разнымиdescription
. Используя приведенные выше команды будут отчетливыеdate
с, но толькоdescription
первого найденного элемента.GROUP BY date,description
.Остальные почти правильные, за исключением того, что они должны быть упорядочены по дате DESC.
источник
DISTINCT
всегда правильный выбор, чтобы получить уникальные значения. Также вы можете сделать это альтернативно, не используя его. ЭтоGROUP BY
. Который просто добавляет в конце запроса и сопровождается именем столбца.источник
Другой
DISTINCT
ответ, но с несколькими значениями:источник
Используйте что-то вроде этого, если вы также хотите выводить сведения о товарах за дату в формате JSON.
Попробуйте это в SQL Fiddle
источник
Существует конкретное ключевое слово для достижения того же.
источник
Зависит от того, что вам нужно.
В этом случае я предлагаю:
потому что есть несколько полей и время выполнения
DISTINCT
меньше, чем выполнениеGROUP BY
.В других случаях, например, когда есть много полей, я предпочитаю:
источник