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`