MySQL:只从列中select唯一的值

我有一个MySQL表,其中包含以下types的信息:

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, MY", strtotime($row["Date"]))."</a></li>"; } mysql_close($con); ?> 

该脚本显示表中的每个date,例如

 12.dec 2011 12.dec.2011 10.dec.2011 10.dec.2011 

我只想显示独特的date,例如

 12.dec.2011 10.dec.2011 

在MySQL中使用DISTINCT运算符:

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

使用

 SELECT DISTINCT Date FROM buy ORDER BY Date 

所以MySQL删除重复

顺便说一句:在SELECT使用明确的列名称在PHP中获取较大的结果时使用较less的资源

使用此查询来获取值

 SELECT * FROM `buy` group by date order by date DESC 

其余的几乎是正确的,除了他们应该由dateDESC命令

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

DISTINCT始终是获取唯一值的正确select。 你也可以不使用它。 那是GROUP BY 。 它只是在查询的最后加上列名。

 SELECT * FROM buy GROUP BY date,description 

另一个DISTINCT答案,但有多个值:

 SELECT DISTINCT `field1`, `field2`, `field3` FROM `some_table` WHERE `some_field` > '5000' ORDER BY `some_field`