mysql 5.7 用变量的方式写窗口函数排名,为什么不能用group by 先分组?
这里group by之后,明明@cid:=cid 的赋值查询出来的结果是对的,但上面的@rank:=IF(@cid=cid,@rank:=@rank+1,1)判断为非,rank全是1
请问这是什么原因呢?我上面 的理解有问题吗? 还是说是对group by的理解有问题?或者是执行顺序的问题?求指教。
我刚实验了一下,把@cid:=cid 放在了if的判断前面。发现group by只是一个显示的作用,内里读行的顺序跟group by 没什么关系,而是跟表原来的顺序一致(我本来以为是用group by 后的顺序去select行来一条条判断。似乎是我搞错这些东西的运行顺序了。主楼的问题我基本上了解问题出在哪了,但对sql语句的运行顺序还是有点迷糊,如果有人了解且可以展开说说的话,不胜感激!
group by语句的select字句中,只能出现分组字段和聚合函数。如果出现其他字段,该字段的值,好像是该分组中,第一条记录的值(这个我不太记得了,你可以实验一下)