2015-07-13 104 views
5

Lessons Table訂貨值

是否有可能在表中的值進行排序的任何方式,所以我得到一週(週一至週日),然後下週,就像下面描述

Monday ....... 
Tuesday ...... 
Wednesday .... 
Thursday ..... 
Friday ....... 
Saturday ..... 
Sunday ....... 

Monday ....... 
Tuesday ...... 
Wednesday .... 
Thursday ..... 
Friday ....... 
Saturday ..... 
Sunday ....... 

Monday ....... 
Tuesday ...... 
Wednesday .... 
Thursday ..... 
Friday ....... 
Saturday ..... 
Sunday ....... 

如果有必要,我可以修改表結構。 我希望它是有道理的。

+0

表中應該至少有一列指定要執行此操作的星期的順序。 – Sid

+2

你需要一個日期列表按日進行排序 – Priyank

+0

如何根據日期或其他內容輸入數據? – Raghavendra

回答

1
SELECT lid, ordinal,DAY, class, teaher, STARTS, ENDS FROM (
    SELECT lid, ordinal, DAY, class, teaher, STARTS, ENDS, 
    IF(@myvar = 0 OR @myvar = ordinal, @counter := @counter + 1, @counter := 1) sequence, 
    @myvar := ordinal FROM mytable 
    JOIN (SELECT @myvar := 0, @counter := 0) a 
    ORDER BY ordinal , lid) b 
ORDER BY sequence, ordinal , lid 

試試這個查詢。我沒有在本地嘗試過。

我已經回答了類似的問題是here

編輯:

要回答下面

1)的意見中提出它是如何工作的問題?

取內部查詢並單獨執行。它爲所有行分配一個序列,只要序數重複,它就會增加計數器。當找到一個新的序號時,它將計數器重置爲1.現在藉助外部查詢,它按順序排序結果並顯示結果。如果您單獨運行這些查詢並分析每個步驟的結果,最好解釋一下。

2)如何以相反的順序得到它?

通過更改訂單的最終像 ORDER BY sequence desc, ordinal , lid

+0

非常感謝它!如果沒有太多的要求,我想1)如果你能解釋這是如何工作的,2)我怎麼能做到相反(按升序排列)。我嘗試將ASC更改爲ASC,但稍微關閉;它走0,2,3,4,5,6,0,1,2,3,4,5,6 – Gacci

+0

@Gacci我已經編輯了答案和簡短的解釋。 – Akhil

0

與平日和orderingnumber創建一個表。然後加入這張表來訂購。 ,因爲一週中的天數以文本形式存儲,所以只能將其映射到一個訂購號。