2012-02-18 111 views
0

鉴于这种示范性关系和数据随机分排序记录

|_id_____|_type____|_name________|_date_______________| 
| 1  | 1  | ajshdf  | 2012-02-18 12:35:00 
| 2  | 1  | jkhae  | 2012-02-18 12:35:00 
| 3  | 1  | dsfad  | 2012-02-18 12:35:00 
| 4  | 2  | 3f3ad  | 2012-02-18 12:35:00 
| 5  | 2  | gad64  | 2012-02-18 12:35:00 
| 6  | 2  | as3da  | 2012-02-18 12:35:00 
| 7  | 3  | faf3a  | 2012-02-18 12:35:00 
| 8  | 3  | ga3d3  | 2012-02-18 12:35:00 
| 9  | 4  | jzd64  | 2012-02-18 12:35:00 

什么是实现resulset将作为均匀分布的记录成为可能,通过该类型排序的最好方法是什么?

我要的是结果记录的方式,最新的条目总是在顶部排列,但该类型周围改变,从而使结果看起来是这样的:

|_id_____|_type____|_name________|_date_______________| 
| 1  | 1  | ajshdf  | 2012-02-18 12:35:00 
| 4  | 2  | 3f3ad  | 2012-02-18 12:35:00 
| 7  | 3  | faf3a  | 2012-02-18 12:35:00 
| 9  | 4  | jzd64  | 2012-02-18 12:35:00 
| 2  | 1  | jkhae  | 2012-02-18 12:35:00 
| 5  | 2  | gad64  | 2012-02-18 12:35:00 
| 8  | 3  | ga3d3  | 2012-02-18 12:35:00 
| 3  | 1  | dsfad  | 2012-02-18 12:35:00 
| 6  | 2  | as3da  | 2012-02-18 12:35:00 
| 7  | 3  | faf3a  | 2012-02-18 12:35:00 

正如你看到的,type改变和循环的结果 - 1,2,3,4,1,2,3,1,2,3

+0

我是afr援助我不明白所需的顺序。不管*分布式*类型的其他约束条件如何,您都*似乎没有“最新的条目总是位于顶部*”我认为一旦您明确定义了您想要的顺序,解决方案也将变得清晰 – mkoistinen 2012-02-18 11:54:30

+0

好吧,我编辑了这个问题 - 日期字段太具体了,我现在看到了。 – 2012-02-18 12:12:46

+0

不能是'SELECT * FROM myTable ORDER BY date,type',如果你想进一步'SELECT * FROM myTable ORDER BY date,type ,名字' – 2012-02-18 14:16:25

回答

0

非常低效,但我认为它会工作:

SELECT a.* 
FROM 
     TableX AS a 
    JOIN 
     TableX AS b 
    ON b.type = a.type 
    AND b.id <= a.id 
GROUP BY 
     a.id 
ORDER BY 
     COUNT(*) 
    , a.id