WEB开发网
开发学院数据库MySQL Mysql的distinct语句和group by,order by 阅读

Mysql的distinct语句和group by,order by

 2007-09-17 10:58:46 来源:WEB开发网   
核心提示: 先和这个比较一下:mysql>selectcom_id,job_timefromf_joborderbyjob_timedesclimit10;Te:webwebphpfhree.txt++-+|com_id|job_time|++-+|2205|2006-09-2916:30:11

先和这个比较一下:

mysql>selectcom_id,job_timefromf_job orderbyjob_timedesclimit10; Te:webwebphpfhr  ee.txt
+--------+---------------------+
|com_id|job_time      |
+--------+---------------------+
| 2205|2006-09-2916:30:11|
| 19084|2006-09-2916:27:55|
| 19084|2006-09-2916:27:55|
| 19084|2006-09-2916:27:55|
| 19084|2006-09-2916:27:55|
| 19084|2006-09-2916:27:55|
| 19084|2006-09-2916:27:55|
| 19084|2006-09-2916:27:55|
| 2205|2006-09-2916:27:22|
| 2715|2006-09-2916:18:36|
+--------+---------------------+
10rowsinset(0.06sec)

发现,distinct恰巧和前面第一次测试的结果相反处理我们的信息,他把隔行的看作不同的结果输出,这就导致了2205的记录又出现了。

然后我就用了groupby语句,应该可以吧,结果也让我。。。:

mysql>selectcom_idfromf_jobgroupbycom_id orderbyjob_timedesclimit10;
+--------+
|com_id|
+--------+
| 19084|
| 2197|
| 19917|
| 19580|
| 19520|
| 19664|
| 19397|
| 19900|
| 1176|
| 19449|
+--------+
10rowsinset(0.03sec)

这和distinct的结果一样,这倒不出乎意料,然后我又加入分组job_time,看看:

mysql>selectcom_idfromf_jobgroupbycom_id,job_time orderbyjob_timedesclimit10;
+--------+
|com_id|
+--------+
| 2205|
| 19084|
| 2205|
| 2715|
| 2197|
| 19580|
| 19917|
| 19580|
| 19520|
| 19900|
+--------+
10rowsinset(0.03sec)

这结果差一点点了,然后我再distinct(com_id)一下,应该可以了吧!看看:

mysql>selectdistinct(com_id)fromf_jobgroupbycom_id,job_time orderbyjob_timedesclimit10; Te:webwebphpfhr  ee.txt
+--------+
|com_id|
+--------+
| 19084|
| 2197|
| 19917|
| 19580|
| 19520|
| 19664|
| 19397|
| 19900|
| 1176|
| 19449|
+--------+
10rowsinset(0.04sec)

汗,这和没加groupby的一点区别都没,怎么这样弱呀!没办法,这怎么办,犹豫中。。。

上面的问题彻底的说明了这样一个事实:distinct只能返回它的目标字段,而无法返回其它字段。。。

汗,这和没加groupby的一点区别都没,怎么这样弱呀!没办法,这怎么办,犹豫中。。。

------------------------------------

想起了一个很能骚的一个人--phzzy,这jh,qq说了句话,果然在,他玩php,马上求助,经过1个多小时的艰苦YY,终于这鸟人先大爷我一步给出语句:

select(`com_id`),max(`job_time`)from`f_job`GROUPBY`com_id`orderbymax(`job_time`)limit10;

mdgb,终于明白了,刚拿到这语句就明白了。

我tmd知道这是2次排序,md,groupby是一次,然后无论怎么样,都不可能2次排序,因为第二次必须借助内部的集聚函数。。。。。。我怎么没想到max,气死我了。

上一页  1 2 3 

Tags:Mysql distinct 语句

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接