V平台动态列分页问题

190 阅读1分钟

由于V平台自带的【加载动态交叉表到实体】规则会把实体的记录动态改变,导致分页控件取数不正确(20条记录可能动态加载显示只有5条记录),所以在查询语句及取数方法里做了一些调整 具体案例如下: 原sql语句: SELECT ZHMain1Inner.Indicators, ZHMain1Inner.MeasureUnit FROM toone_special_report_db.VIEW_ZHMainIndicator1 ZHMain1Inner WHERE ZHMain1Inner.IsDelete = 0 AND ZHMain1Inner.ReportInfoBizId = :ReportInfoBizId GROUP BY ZHMain1Inner.Indicators, ZHMain1Inner.MeasureUnit 处理后sql语句: SELECT ZHMain1.* FROM toone_special_report_db.VIEW_ZHMainIndicator1 ZHMain1 LEFT JOIN ( SELECT ZHMain1Inner.Indicators, ZHMain1Inner.MeasureUnit FROM toone_special_report_db.VIEW_ZHMainIndicator1 ZHMain1Inner WHERE ZHMain1Inner.IsDelete = 0 AND ZHMain1Inner.ReportInfoBizId = :ReportInfoBizId GROUP BY ZHMain1Inner.Indicators, ZHMain1Inner.MeasureUnit LIMIT :pageSize, :pageNum ) groupFiled ON 1 = 1 WHERE ZHMain1.IsDelete = 0 AND ZHMain1.ReportInfoBizId = :ReportInfoBizId AND ZHMain1.Indicators = groupFiled.Indicators AND ZHMain1.MeasureUnit = groupFiled.MeasureUnit

实现思路:在子查询中用MySql自带的函数 LIMIT(记录数,当前索引位置) 来对分组(一般是【加载动态交叉表到实体】规则里的固定列字段)后的数据进行分页 然后再最外层查询用上子查询里的字段当条件进行查询,达到效果(查询条件还待优化)

由于VSql语法的分页是PageSize,PageNumber(记录数,当前页数) 所以还要对 LIMIT函数的pageNum值进行处理 实际处理 limit 第二位参数 查询偏移数量 公式:(当前页-1)*每页显示数+1 具体案例如下: