实际需求:当我们查询十条记录的时候,每条记录前需要显示行号。
解决方案
① @a 用户变量
意思就是设置一个变量a = 0; 当我们执行sql时,在sql中加入
select @a:=@a+1 as row_num, employees.* from employees limit 10; ## @a:=@a+1 表示变量a 每行加1
这里有两个问题:
a) 每次都需要单独的去定义一个行号的变量,
b) 行号现在的值应该是10,不是0,下次查询的话要重新赋值
所以的话,我们可以把select @a:=0 相当于一张表,进行关联查询解决这个问题;
select @a:=@a+1 as row_num, employees.* from employees,(select @a:=0) a limit 10;
② 还有一种比较奇怪的排序,这种效率比较低,不建议
SELECT emp_no, (
select count(1) from employees t2 where t2.emp_no <= t1.emp_no
) AS row_num
FROM employees t1
ORDER BY emp_no
limit 10