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`