重写查询以进行分页
我有一个程序,其中用户提供了一个可以在数据库上执行的sql查询(运行数据库的详细信息也由用户提供)。此查询将在数据库上执行,并在以后处理结果。
一个新特性要求以分页方式执行查询,即,如果用户的查询正常返回20条记录,并且用户提供的页面大小为5,则查询应该执行4次,每次检索5条记录。
对于没有CTE的select查询,我可以做到这一点,但我不确定如何处理包含CTE的通用查询。
我修改了CTE的查询,如下所示:
public static String rewrite(String sql) {
return "select * from ("
+ "select (row_number() over ()) as generated_row_number, t.* "
+ "from ("
+ sql
+ ") as t"
+ ") "
+ "where generated_row_number < ?"
+ " and generated_row_number >= ?";
}
其中起始索引和页面大小稍后作为参数添加。
对于包含CTE的查询,我该如何处理类似的功能?
数据库可以假定为DB2,不过最好使用通用的解决方案。
连接到数据库的用户也没有创建视图的权限。
转载请注明出处:http://www.syyashida.com/article/20230330/916668.html
随机推荐
-
需要帮助重写T-SQL查询以使结果显示在堆叠条形图中
我提出了下面的查询,得到了下面的结果。SELECT TOP (100) PERCENT s.UserfName AS ASSIGNEE, e.status, COUNT(*) AS [TOTAL COUNT], CASE WH...
-
MySQL 重写查询语句的三种策略
目录复杂查询与分步查询 切分查询语句 拆解联合查询 在优化存在问题的查询时,我们需要改变方式去获取查询结果——但这并不意味着从 MySQL获取同样的结果集。有些时候我们可以将查询转换为获取相同结果,但更好性能的查询形式。然而,我们也需要考...
-
如何重写Oracle SQL Developer查询以在SQL server上工作
我有了一份新工作,但现在我必须使用SQL Server而不是Oracle SQL Developer。I外部连接表的方式不再有效。我需要一个很好的例子,它如何与SQL Server和多个表一起工作。这就是我用旧方法编写查询的方式(Oracl...
-
将联合查询重写为单个查询
我想知道是否有可能将其编写为一个查询:SELECT * FROM (SELECT markets.* FROM markets INNER JOIN positions ON positions.id = markets.po...
-
Elasticsearch通配符查询重写参数不适用于新的通配符字段类型?
通配符查询提供了一个重写参数来影响Lucene计算相关性分数的方式。在关键字字段上,这可以按预期工作,但它似乎不适用于属于关键字系列的新通配符字段类型。这是预期行为还是bug?
-
mysql 学习 - 查询重写规则
本篇已收录在 MySQL 是怎样运行的 学习笔记系列 条件化简 我们编写的查询语句的搜索条件本质上是一个表达式,这些表达式可能比较繁杂,或者不能高效的执行,MySQL的查询优化器会为我们简化这些表达式。 移除不必要的括号 有时候表达式里...
-
重写SQL查询以优化性能
我有一个大约需要2秒加载的查询:SELECT OUTPUT_VAL.NEXTVAL VAR1_R_ID,A.R_ID,A.VAR1,A.SEQU,A.OUTPUT,B.VAR1 DATATYPE_VAR1 FROM ( SELE...
-
MySQL重写LIKE查询中的字符串?
我不得不提出以下问题:SELECT *, sites.id AS id, sites.url AS url, COUNT(sites_links.id) AS netwerklinks FROM sites LEFT JOIN ...
-
查询重写和调优
我有下面的查询,这是性能下降的原因,有人可以帮助重写这个查询,以便它可以更好地执行。SELECT?*? FROM???(SELECT?ITEMDETAIL0_.depid?AS?COL_0_0_? ????????FROM???xxxxxx...
-
如何在Pandas中重写以下SQL代码以显示查询而不仅仅是标题?
我有一个数据集,我正在尝试将SQL查询写到Pandas中。SQL查询代码为:`SELECT Industry_type, No_of_Employees, Employee_Insurance_Premium, Percent_Female...