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

Mysql的distinct语句和group by,order by

 2007-09-17 10:58:46 来源:WEB开发网   
核心提示: 对,这次得出的结果是唯一,Mysql的distinct语句和group by,order by(2),但是,这不对呀,也可以被比较出来,先是明白了MySql的弱智了,很明显,把com_id记录号码是2005的记录给没了

对,这次得出的结果是唯一,但是,这不对呀,很明显,把com_id记录号码是2005的记录给没了,这结果肯定错。马上分析一下所有的的结果,发现忽略的com_id并没有消失,只是被排到后面去了。

我按照时间排序,应该出现的结果第一个就是2205呀,为什么能排到后面?从两条可疑记录看出了结果:

原记录:

| 5058| 19580|2006-09-2915:23:58|
| 5057| 19917|2006-09-2915:14:16|
| 4973| 19580|2006-09-2915:13:49|
| 5011| 19580|2006-09-2915:13:49|

distinct后的次序:

| 19917|
| 19580|

这说明,对于不是在一起的隔行记录,如果恰巧隔一行,还可以被orderby比较出来,否则比较出来的不再真实,这是因为,被缓存的上次的orderby的临时值在客观上不再有用!还有一种情况,如果记录连着,也可以被比较出来。

先是明白了MySql的弱智了。

马上又执行了一下操作,结果如下:

mysql>selectdistinct(com_id),job_timefromf_job orderbyjob_timedesclimit10; 
+--------+---------------------+
|com_id|job_time      |
+--------+---------------------+
| 2205|2006-09-2916:30:11|
| 19084|2006-09-2916:27:55|
| 2205|2006-09-2916:27:22|
| 2715|2006-09-2916:18:36|
| 2197|2006-09-2916:03:16|
| 19580|2006-09-2915:23:58|
| 19917|2006-09-2915:14:16|
| 19580|2006-09-2915:13:49|
| 19520|2006-09-2910:29:41|
| 19900|2006-09-2910:16:48|
+--------+---------------------+
10rowsinset(0.10sec)

Tags:Mysql distinct 语句

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