之前看到这样一个写法,@rownum:= @rownum+1,当时一脸懵逼,最后通过摸索搞懂了。
在Oracle中可以通过rownum实现分页查询,在mysql中可以使用自定义变量实现获取行号
注意的是rownum并不是mysql中的函数,可以任意命名
其实后面 SELECT @haha := 0 相当于一张中间表,列明为@haha := 0,初始值为0,再通过上面的递增+1赋值,需要注意的是( SELECT @rownum := 0 ) r 必须加括号且取表别名 否则会报错
为什么一定要设置别名,它是先查询后排序的,例如你的条件为rownum>1,当查询到第一条数据,rownum为1,则不符合条件。第2、3...类似,一直不符合条件,所以一直没有返回结果。所以查询的时候需要设置别名,然后查询完成之后再通过调用别名进行大于的判断。
也可以通过mysql函数一起使用,例如concat字符串拼接
如果有不正确的地方,希望大佬指正。