diff --git a/sql-statements/sql-statement-select.md b/sql-statements/sql-statement-select.md index 1e101c27e9a3a..b99a68709c5bb 100644 --- a/sql-statements/sql-statement-select.md +++ b/sql-statements/sql-statement-select.md @@ -31,7 +31,27 @@ SelectStmtOpts ::= SelectStmtStraightJoin TableRefsClause ::= - TableRef AsOfClause? ( ',' TableRef AsOfClause? )* + TableRef ( ',' TableRef )* + +TableRef ::= + TableFactor +| JoinTable + +TableFactor ::= + TableName ( "PARTITION" "(" Identifier ("," Identifier)* ")" )? ("AS" TableAlias)? AsOfClause? TableSample? + +JoinTable ::= + TableRef + ( + ("INNER" | "CROSS")? "JOIN" TableRef JoinClause? + | "STRAIGHT_JOIN" TableRef "ON" Expression + | ("LEFT" | "RIGHT") "OUTER"? "JOIN" TableRef JoinClause + | "NATURAL" ("LEFT" | "RIGHT") "OUTER"? "JOIN" TableFactor + ) + +JoinClause ::= + ("ON" Expression + | "USING" "(" ColumnNameList ")" ) AsOfClause ::= 'AS' 'OF' 'TIMESTAMP' Expression @@ -47,10 +67,19 @@ SelectLockOpt ::= TableList ::= TableName ( ',' TableName )* +WhereClause ::= + "WHERE" Expression + +GroupByClause ::= + "GROUP" "BY" Expression + +OrderBy ::= + "ORDER" "BY" Expression + WindowClause ::= "WINDOW" WindowDefinition ("," WindowDefinition)* -TableSampleOpt ::= +TableSample ::= 'TABLESAMPLE' 'REGIONS' '(' ')' ```