这里使用一个例子来说明sql执行顺序。
图1
例子中初始化2个变量,在select中变量@rownum等式运算自加1,where中变量@rownum1使用@rownum+1复制。在不排序执行时,结果如例子显示。
我们通过变量值的变化可以推导出sql执行的顺序。大致如下:
1.where,判断@rownum<=1,此时变量@rownum=0,变量@rownum1=0,第一个条件符合
2.where,第二个条件and关联,需要同时满足必须执行。而这个条件是复制行为,一定会满足。执行后@rownum1变量值被复制0+1,即为1
3.select,取列值id,计算@rownum+1复制给列cnt,@rownum复制给列cnt1 。此时变量@rownum值为1,变量@rownum1值为1
4.where,重复第一步,@rownum此时为1,符合小于等于1条件
5.wher