Oracle视图里rownum在mysql视图中的替代方案

mysql如果你只是需要在SQL查询的情况下需要使用Oracle的rownum同等的效果可直接通过以下方式去查看获取rownum的值


SELECT 
  @rownum := @rownum +1 AS rownum,
  e.*
FROM
  (SELECT 
    @rownum := 0) r,
  employee e

但是这种方法在视图中是不能保存的,会报错

Oracle视图里rownum在mysql视图中的替代方案

视图中不能存入变量,所以我们利用function函数来辅助视图中建立rownum。

先建立function函数计算rownum的增长。

CREATE FUNCTION `func_inc_var_session`(reset BIT) RETURNS int
BEGIN
	IF reset THEN
	 SET @var := 0;
	ELSE
	SET @var := IFNULL(@var,0) + 1;
	 END IF;
	RETURN @var;
END

然后在View中调用这个函数func_inc_var_session,注意下面框出的部分不能写错,不然会达不到效果。Oracle视图里rownum在mysql视图中的替代方案

;