Mysql的distinct语句和group by,order by
2007-09-17 10:58:46 来源:WEB开发网最近,在做一个项目的时候,发现得出的数据于预料的相差很多,仔细的研究了一下,发现问题出在distinct语句和groupyby,orderby
首先,distinct语句,获得非重复的(唯一)行记.
grouyby是分组,orderby是排序。
直接看我的例子。
假定我有一个表f_job,有字段:
selectjob_id,com_id,job_timefromf_job orderbyjob_timedesclimit10; Te:webwebphpfhr ee.txt
+--------+--------+---------------------+
|job_id|com_id|job_time |
+--------+--------+---------------------+
| 5060| 2205|2006-09-2916:30:11|
| 4707| 19084|2006-09-2916:27:55|
| 4708| 19084|2006-09-2916:27:55|
| 4709| 19084|2006-09-2916:27:55|
| 4710| 19084|2006-09-2916:27:55|
| 4711| 19084|2006-09-2916:27:55|
| 4859| 19084|2006-09-2916:27:55|
| 4918| 19084|2006-09-2916:27:55|
| 5059| 2205|2006-09-2916:27:22|
| 4078| 2715|2006-09-2916:18:36|
+--------+--------+---------------------+
10rowsinset(0.03sec)
还有其他字段,不可能影响结果.此处不列出。
job_id是primarykey。com_id是外键,我需要按照时间来排序。所以必须使用orderby!
你看到了com_id在得出的结果中不唯一,对,我需要的结果就是提取com_id唯一的最近10条com_id的记录,而已。
我就以以前的MSSQL的经验写如下的语句执行:
mysql>selectdistinct(com_id)fromf_job orderbyjob_timedesclimit10; Te:webwebphpfhr ee.txt
+--------+
|com_id|
+--------+
| 19084|
| 2197|
| 19917|
| 19580|
| 19520|
| 19664|
| 19397|
| 19900|
| 1176|
| 19449|
+--------+
更多精彩
赞助商链接