diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index 278ce9b3b1..4c309df917 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -1609,9 +1609,13 @@ SelectBody SetOperationList() #SetOperationList: { } else { if (selects.size()>1 && selects.get(selects.size()-1) instanceof PlainSelect) { PlainSelect ps = (PlainSelect)selects.get(selects.size()-1); - if (ps.getOrderByElements() != null) { + if (ps.getOrderByElements() != null && !brackets.get(brackets.size() - 1)) { list.setOrderByElements(ps.getOrderByElements()); + list.setLimit(ps.getLimit()); + list.setOffset(ps.getOffset()); ps.setOrderByElements(null); + ps.setLimit(null); + ps.setOffset(null); } } list.setBracketsOpsAndSelects(brackets,selects,operations); diff --git a/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java b/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java index 519abc91d1..729941af6c 100644 --- a/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java @@ -882,6 +882,12 @@ public void testSelectItems() throws JSQLParserException { assertStatementCanBeDeparsedAs(select, statement); } + @Test + public void testUnionWithOrderByAndLimitAndNoBrackets() throws JSQLParserException { + String stmt = "SELECT id FROM table1 UNION SELECT id FROM table2 ORDER BY id ASC LIMIT 55"; + assertSqlCanBeParsedAndDeparsed(stmt); + } + @Test public void testUnion() throws JSQLParserException { String statement = "SELECT * FROM mytable WHERE mytable.col = 9 UNION "