在 Oracle 中我可以有这样的 SQL 字符串
select * from table where rownum <= ?
然后在PreparedStatement中我可以将rownum设置为参数。
它如何与带有 LIMIT 子句的 Postgres JDBC (Java) 一起使用?执行以下操作不会让我设置参数:
select * from table limit ?
无法在
?
子句中使用 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 方法以编程方式限制结果集的大小。