2012-02-18 178 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