выбор уникальных значений из столбца

У меня есть таблица 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
Комментарии к вопросу (1)
Решение

Используйте оператор DISTINCT в MySQL:

SELECT DISTINCT(Date) AS Date FROM buy ORDER BY Date DESC;
Комментарии (2)

использовать

SELECT DISTINCT Date FROM buy ORDER BY Date

чтобы MySQL удалял дубликаты

BTW: использование явных имен столбцов в SELECT использует меньше ресурсов в PHP, когда вы получаете большой результат из MySQL

Комментарии (6)

Используйте этот запрос, чтобы получить значения<БР>

SELECT * FROM `buy` group by date order by date DESC
Комментарии (2)

Остальные почти правильные, за исключением того, что они должны быть упорядочены по Date DESC

SELECT DISTINCT(Date) AS Date FROM buy ORDER BY Date DESC;
Комментарии (1)

Отчетливый - это всегда правильный выбор, чтобы получить уникальные значения. Также вы можете сделать это либо без его использования. Что'группа s на. Которого просто добавить в конце запроса и затем имени столбца.

SELECT * FROM buy GROUP BY date,description
Комментарии (0)

Другой четкая ответ, но с несколькими значениями:

SELECT DISTINCT `field1`, `field2`, `field3` FROM `some_table`  WHERE `some_field` > 5000 ORDER BY `some_field`
Комментарии (0)

Использовать что-то вроде этого в случае, если вы также хотите выпускаемой продукции детали на дата в формате JSON.

SELECT `date`,
CONCAT('{',GROUP_CONCAT('{\"id\": \"',`product_id`,'\",\"name\": \"',`product_name`,'\"}'),'}') as `productsJSON`
FROM `buy` group by `date` 
order by `date` DESC

 product_id product_name     date  
|    1     |     azd    | 2011-12-12 |
|    2     |     xyz    | 2011-12-12 |
|    3     |     ase    | 2011-12-11 |
|    4     |     azwed  | 2011-12-11 |
|    5     |     wed    | 2011-12-10 |
|    6     |     cvg    | 2011-12-10 |
|    7     |     cvig   | 2011-12-09 |

RESULT
       date                                productsJSON
2011-12-12T00:00:00Z    {{"id": "1","name": "azd"},{"id": "2","name": "xyz"}}
2011-12-11T00:00:00Z    {{"id": "3","name": "ase"},{"id": "4","name": "azwed"}}
2011-12-10T00:00:00Z    {{"id": "5","name": "wed"},{"id": "6","name": "cvg"}}
2011-12-09T00:00:00Z    {{"id": "7","name": "cvig"}}

Попробуйте в в SQL скрипку

Комментарии (0)

Зависит от того, что вам нужно.

В этом случае я предлагаю:

SELECT DISTINCT(Date) AS Date FROM buy ORDER BY Date DESC;

потому что есть несколько полей и времени выполнения четкая меньше, чем группы.

В других случаях, например, когда есть много полей, я предпочитаю:

SELECT * FROM buy GROUP BY date ORDER BY date DESC;
Комментарии (0)

Есть конкретное ключевое слово для достижения того же.

SELECT DISTINCT( Date ) AS Date 
FROM   buy 
ORDER  BY Date DESC; 
Комментарии (0)