Mysql SQL中的值排序

Mysql SQL中的值排序,mysql,Mysql,是否有任何方法可以对表中的值进行排序,这样我就可以得到一周(周一-周日),然后是下周,就像下面描述的那样 Monday ....... Tuesday ...... Wednesday .... Thursday ..... Friday ....... Saturday ..... Sunday ....... Monday ....... Tuesday ...... Wednesday .... Thursday ..... Friday ....... Saturday ..... S

是否有任何方法可以对表中的值进行排序,这样我就可以得到一周(周一-周日),然后是下周,就像下面描述的那样

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

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

Monday .......
Tuesday ......
Wednesday ....
Thursday .....
Friday .......
Saturday .....
Sunday .......
如果有必要,我可以修改表结构。 我希望这是有道理的

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
尝试此查询。我没有在本地尝试过

我所回答的类似问题是:

编辑:

回答以下评论中提出的问题

1) 它是如何工作的

获取内部查询并单独执行它。它为所有行分配一个序列,每当序号重复时,它都会递增计数器。当找到新序号时,它会将计数器重置为1。现在借助外部查询,它按顺序对结果排序并显示结果。如果您单独运行这些查询并在每个步骤分析结果,这将是最好的解释

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

通过like更改最终订单
ORDER BY sequence desc,ordinal,lid
创建一个包含工作日和orderingnumber的表。然后加入这张桌子来点菜。
由于一周中的日期存储为文本,因此您只能将其映射到订购编号。

表中至少应有一列指定每周的订购顺序。您需要一个日期栏按天订购显示输入的数据是基于日期还是其他什么?不,它只是以lid作为主键!是的,有一种方法可以进行递归分组,并获取星期一、星期二等的第n个值。非常感谢它的工作!如果这不是太多的要求,我想1)如果你能解释这是如何工作的,2)我如何做相反的事情(按升序)。我尝试将DESC更改为ASC,但有点不对劲;它是0,2,3,4,5,6,0,1,2,3,4,5,6@Gacci我对答案进行了编辑,并作了简要解释。