下面的变量每次不是应该从0开始计算吗,但是从结果来看,只有select读第一条记录时 读了 r表,其后都是根据上次结果自加的,没有在读取r表,有兴趣的朋友帮忙解释下
mysql> select * from dateTable_tmp limit 10; +------------+-----+ | riqi | num | +------------+-----+ | 2017-09-26 | 0 | | 2017-09-25 | 0 | | 2017-09-24 | 0 | | 2017-09-23 | 0 | | 2017-09-22 | 0 | | 2017-09-21 | 0 | | 2017-09-20 | 0 | | 2017-09-19 | 0 | | 2017-09-18 | 0 | | 2017-09-17 | 0 | +------------+-----+ 10 rows in set mysql> select riqi,@num:=@num+1 FROM dateTable_tmp a ,(select @num:=0) r limit 10; +------------+--------------+ | riqi | @num:=@num+1 | +------------+--------------+ | 2017-09-26 | 1 | | 2017-09-25 | 2 | | 2017-09-24 | 3 | | 2017-09-23 | 4 | | 2017-09-22 | 5 | | 2017-09-21 | 6 | | 2017-09-20 | 7 | | 2017-09-19 | 8 | | 2017-09-18 | 9 | | 2017-09-17 | 10 | +------------+--------------+ 10 rows in set mysql>
你想说啥呢?
想说应该是从0~9是吗?
我的意思 应该都是 1
@葱油饼: 计算语句都是逐行执行的,所以SQL有一个建议,尽量避免CASE WHENz这一类的语法(会拖慢速度)
@爱编程的大叔: dateTable_tmp a ,(select @num:=0) r 这两张表都只读了一次吗
我是没搞懂,这条语句是如何,检索数据的,说的深点就是mysql查询时的机制
@葱油饼: 你是打算写数据库引擎吧?
失敬失敬。
这个我也只会用,百年内没有打算开发数据库引擎,所以也不懂。
@爱编程的大叔: 大叔 这。。。。,失礼了我
select不是只执行一次么~
额。。。,或者我想问 这条语句的执行 步奏
下一条记录的num是上一条记录的num+1?