在SQL中排序值

时间:2015-07-13 06:28:47

标签: mysql

Lessons Table

有没有什么方法可以对表格上的值进行排序,所以我得到一周(周一至周日),然后是下周,就像下面描述的那样

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

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

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

如果有必要,我可以修改表结构。 我希望这是有道理的。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

使用Weekday和ordersnumber创建一个表。然后加入此表来订购。 因为星期几存储为文本,所以只能将其映射到订购号。