这里整理下在MySQL中排序的方法
我就记得在哪儿写过,刚刚一直没找着,就又整理了一下,后来找到了,坑
之前的博客:MySQL-分组排序
序号
在MySQL中,没有什么row_number(),rank() 之类的开窗函数,我们想要显示数据行号的话,要使用变量来手动排序
关于变量可以参考之前的博客:MySQL-变量的使用
这里呢,我们先使用set对@r变量进行了初始化,不初始化的话,变量默认为NULL,
因为我们使用的用户自定义变量,只在当前会话窗口有效,换个窗口就不行了;同样的,如果不初始化为0,他会继续使用上次的值
所以,我们要给数据显示序号的话,就需要使用这个变量
我们在表b中初始化序号变量,表a表b没有关联关系,直接产生笛卡尔积,因为记录是按行返回的,所以每行记录都会产生一个序号,每行记录按照@row_num:=@row_num+1进行赋值
这里就和SQL的执行顺序有关,要好好领会一下
用下面的方式也可以
分组排序
上面,我们就简单的实现了序号,有时候,我们需要实现更复杂的分组排序
因为我们要看分组的序号,所以,我们得知道当前记录的c_id和上一条记录的c_id是否一样,一样继续序号,不一样,就要重新开始编号了。
后面就参考前面的文章吧。
MySQL-分组排序