
是否有任何方法可以对表格上的值进行排序,因此我得到一周(周一至周日),然后是下周,就像下面描述的那样
Monday .......
Tuesday ......
Wednesday ....
Thursday .....
Friday .......
Saturday .....
Sunday .......
Monday .......
Tuesday ......
Wednesday ....
Thursday .....
Friday .......
Saturday .....
Sunday .......
Monday .......
Tuesday ......
Wednesday ....
Thursday .....
Friday .......
Saturday .....
Sunday .......
Run Code Online (Sandbox Code Playgroud)
如果有必要,我可以修改表结构.我希望这是有道理的.
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
Run Code Online (Sandbox Code Playgroud)
尝试这个查询。我本地没试过。
我已经回答过的类似问题在这里
编辑 :
回答下面评论中提出的问题
1)它是如何工作的?
取出内部查询并单独执行。它为所有行分配一个序列,每当序数重复时,它就会递增计数器。当找到新的序数时,它将计数器重置为 1。现在在外部查询的帮助下,它按序列对结果进行排序并显示结果。如果您单独运行这些查询并分析每个步骤的结果,那就最好解释了
2)如何以相反的顺序得到它?
按like更改最终顺序
ORDER BY sequence desc, ordinal , lid