Mysql的distinct语句和group by,order by
2007-09-17 10:58:46 来源:WEB开发网对,这次得出的结果是唯一,但是,这不对呀,很明显,把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)
更多精彩
赞助商链接