我有一个程序,其中用户提供了一个可以在数据库上执行的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

随机推荐

  1. 需要帮助重写T-SQL查询以使结果显示在堆叠条形图中

    我提出了下面的查询,得到了下面的结果。SELECT TOP (100) PERCENT s.UserfName AS ASSIGNEE, e.status, COUNT(*) AS [TOTAL COUNT], CASE WH...

  2. MySQL 重写查询语句的三种策略

    目录复杂查询与分步查询 切分查询语句 拆解联合查询 在优化存在问题的查询时,我们需要改变方式去获取查询结果——但这并不意味着从 MySQL获取同样的结果集。有些时候我们可以将查询转换为获取相同结果,但更好性能的查询形式。然而,我们也需要考...

  3. 如何重写Oracle SQL Developer查询以在SQL server上工作

    我有了一份新工作,但现在我必须使用SQL Server而不是Oracle SQL Developer。I外部连接表的方式不再有效。我需要一个很好的例子,它如何与SQL Server和多个表一起工作。这就是我用旧方法编写查询的方式(Oracl...

  4. 将联合查询重写为单个查询

    我想知道是否有可能将其编写为一个查询:SELECT * FROM (SELECT markets.* FROM markets INNER JOIN positions ON positions.id = markets.po...

  5. Elasticsearch通配符查询重写参数不适用于新的通配符字段类型?

    通配符查询提供了一个重写参数来影响Lucene计算相关性分数的方式。在关键字字段上,这可以按预期工作,但它似乎不适用于属于关键字系列的新通配符字段类型。这是预期行为还是bug?

  6. mysql 学习 - 查询重写规则

    本篇已收录在 MySQL 是怎样运行的 学习笔记系列 条件化简 我们编写的查询语句的搜索条件本质上是一个表达式,这些表达式可能比较繁杂,或者不能高效的执行,MySQL的查询优化器会为我们简化这些表达式。 移除不必要的括号 有时候表达式里...

  7. 重写SQL查询以优化性能

    我有一个大约需要2秒加载的查询:SELECT OUTPUT_VAL.NEXTVAL VAR1_R_ID,A.R_ID,A.VAR1,A.SEQU,A.OUTPUT,B.VAR1 DATATYPE_VAR1 FROM ( SELE...

  8. MySQL重写LIKE查询中的字符串?

    我不得不提出以下问题:SELECT *, sites.id AS id, sites.url AS url, COUNT(sites_links.id) AS netwerklinks FROM sites LEFT JOIN ...

  9. 查询重写和调优

    我有下面的查询,这是性能下降的原因,有人可以帮助重写这个查询,以便它可以更好地执行。SELECT?*? FROM???(SELECT?ITEMDETAIL0_.depid?AS?COL_0_0_? ????????FROM???xxxxxx...

  10. 如何在Pandas中重写以下SQL代码以显示查询而不仅仅是标题?

    我有一个数据集,我正在尝试将SQL查询写到Pandas中。SQL查询代码为:`SELECT Industry_type, No_of_Employees, Employee_Insurance_Premium, Percent_Female...