diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractSubSelect.java b/jOOQ/src/main/java/org/jooq/impl/AbstractSubSelect.java index 6f9e1b2a41..dbbf1f5453 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractSubSelect.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractSubSelect.java @@ -393,25 +393,37 @@ implements toSQLReference0(local); String enclosed = local.render(); - String subqueryName = "limit_" + Util.hash(enclosed); + String innerSubqueryName = "inner_" + Util.hash(enclosed); + String outerSubqueryName = "outer_" + Util.hash(enclosed); String rownumName = "rownum_" + Util.hash(enclosed); context.keyword("select * from (") .formatIndentStart() .formatNewLine() .keyword("select ") - .sql(subqueryName) + .sql(outerSubqueryName) .keyword(".*, rownum as ") .sql(rownumName) .formatSeparator() .keyword("from (") .formatIndentStart() .formatNewLine() + .keyword("select ") + .sql(innerSubqueryName) + .keyword(".*") + .formatSeparator() + .keyword("from (") + .formatIndentStart() + .formatNewLine() .sql(enclosed) .formatIndentEnd() .formatNewLine() .sql(") ") - .sql(subqueryName) + .sql(innerSubqueryName) + .formatSeparator() + .keyword("where rownum <=") + .sql(getLimit().getUpperRownum()) + .sql(outerSubqueryName) .formatIndentEnd() .formatNewLine() .keyword(")") @@ -419,12 +431,7 @@ implements .keyword("where ") .sql(rownumName) .sql(" > ") - .sql(getLimit().getLowerRownum()) - .formatSeparator() - .keyword("and ") - .sql(rownumName) - .sql(" <= ") - .sql(getLimit().getUpperRownum()); + .sql(getLimit().getLowerRownum()); } /**