PostgreSQL:添加限制参数

问题描述 投票:0回答:1

在 Oracle 中我可以有这样的 SQL 字符串

select * from table where rownum <= ?

然后在PreparedStatement中我可以将rownum设置为参数。

它如何与带有 LIMIT 子句的 Postgres JDBC (Java) 一起使用?执行以下操作不会让我设置参数:

select * from table limit ?
java postgresql jdbc prepared-statement limit
1个回答
0
投票

无法在

?
子句中使用
LIMIT
占位符。 如果您绝对需要从 SQL 执行此操作,一种解决方法可能是将
ROW_NUMBER()
与子查询一起使用。 换句话说,改变这个:

SELECT * FROM yourTable ORDER BY some_col LIMIT ?

对此:

SELECT *
FROM (
    SELECT *, ROW_NUMBER() OVER (ORDER BY some_col) rn
    FROM yourTable
) t
WHERE rn < ?;

但是,在实践中,如果您使用 JPA,则可以使用各种 JPA 方法以编程方式限制结果集的大小。

© www.soinside.com 2019 - 2024. All rights reserved.