项目场景:
项目从oracle11迁移到mysql5.7,在列表展示上,出现了问题。
问题描述
因为oracle语法中有rownum函数,但mysql没有。这导致做出的列表序号为空。
> 1054 - Unknown column 'rownum' in 'where clause'
> 时间: 0s
解决方案:
一、在oracle环境中的生成可分页的序号解决方案,很简单。
SELECT rownum as 序号 FROM 表名
二、在mysql中生成可分页的序号解决方案:
select convert((@i:=@i+1),SIGNED) as 序号 from 表名 ,(select @i:=0)t
二、如果用的layui,直接添加下面这个参数就可以了。分页也是有的。
type:'numbers'
结果可以看到,第二页也是正常的。
在解决Oracle、MySQL以及Layui生成序号的问题时,我们需要分别考虑它们各自的特点。对于Oracle,我们通常使用ROWNUM
或ROW_NUMBER()
函数来生成序号。但需要注意的是,ROWNUM
是一个伪列,它只在查询结果返回前有效,因此不能在WHERE
子句中使用它,否则会出现1054错误。解决这个问题的方法是使用子查询或者将ROWNUM
与ROW_NUMBER()
结合使用。
MySQL中则没有ROWNUM
,而是使用LIMIT
和OFFSET
进行分页,或者使用用户定义的变量来生成序号。当需要在查询结果中显示序号时,可以在查询中添加一个变量,并在SELECT
语句中递增这个变量。
至于Layui,它是一个前端UI框架,生成序号通常是在前端JavaScript代码中实现的。可以通过遍历数据列表,为每个元素添加一个序号属性来实现。
综上所述,虽然不同系统和框架生成序号的方法各异,但都可以通过理解和利用它们各自的特性和功能来实现。对于错误代码1054,关键是要理解其背后的原因,并根据具体情况选择合适的解决方法。