SELECT Syntax

select::= select-term [ set-op [ ALL ] ] [ order-by-clause | limit-clause | offset-clause ]

select
Figure 1. Railroad Diagram: select

select-term::= subselect | "(" select ")"

select term
Figure 2. Railroad Diagram: select-term

subselect::= select-from | from-select

subselect
Figure 3. Railroad Diagram: subselect

select-from::= select-clause [ from-clause | let-clause | where-clause | group-by-clause ]

select from
Figure 4. Railroad Diagram: select-from

from-select::= from-clause [ let-clause ] [ where-clause ] [ group-by-clause ] select-clause

from select
Figure 5. Railroad Diagram: from-select

SELECT Clause

select-clause::= SELECT [ ALL | DISTINCT ] ( result-expr [ , result-expr ]* | ( RAW | ELEMENT | VALUE ) expr [ [AS] alias ] )

select clause
Figure 6. Railroad Diagram: select-clause

FROM Clause

from-clause::= FROM from-term

from clause
Figure 7. Railroad Diagram: from-clause

from-term::= from-keyspace [ [ AS ] alias ] [ use-clause ] | "(" select ")" [ AS ] alias | expr [ [ AS ] alias] | from-term ( join-clause | nest-clause | unnest-clause )

from term
Figure 8. Railroad Diagram: from-term

from-keyspace::= [ namespace : ] keyspace

from keyspace
Figure 9. Railroad Diagram: from-keyspace

JOIN Clause

join-clause::= [ join-type ] JOIN from-keyspace [ [ AS ] alias ] join-predicate

join clause
Figure 10. Railroad Diagram: join-clause

join-type::= INNER | LEFT [ OUTER ]

join type
Figure 11. Railroad Diagram: join-type

join-predicate::= lookup-join-predicate | index-join-predicate

join predicate
Figure 12. Railroad Diagram: join-predicate

lookup-join-predicate::= ON [ PRIMARY ] KEYS expr

lookup join predicate
Figure 13. Railroad Diagram: lookup-join-predicate

index-join-predicate::= ON [ PRIMARY ] KEY expr FOR alias

index join predicate
Figure 14. Railroad Diagram: index-join-predicate

NEST Clause

nest-clause::= [ join-type ] NEST from-keyspace [ [ AS ] alias ] join-predicate

nest clause
Figure 15. Railroad Diagram: nest-clause

UNNEST Clause

unnest-clause::= [ join-type ] ( UNNEST | FLATTEN ) expr [ [ AS ] alias ]

unnest clause
Figure 16. Railroad Diagram: unnest-clause

USE Clause

use-clause::= use-keys-clause | use-index-clause

use clause
Figure 17. Railroad Diagram: use-clause

use-keys-clause::= USE [ PRIMARY ] KEYS expr

use keys clause
Figure 18. Railroad Diagram: use-keys-clause

use-index-clause::= USE INDEX "(" index-ref [ "," index-ref ]* ")"

use index clause
Figure 19. Railroad Diagram: use-index-clause

index-ref::= index-name [ index-using ]

index ref
Figure 20. Railroad Diagram: index-ref

index-name::= identifier

index name
Figure 21. Railroad Diagram: index-name

index-using::= USING ( VIEW | GSI )

index using
Figure 22. Railroad Diagram: index-using

LET Clause

let-clause::= LET alias "=" expr [ "," alias = expr ]*

let clause
Figure 23. Railroad Diagram: let-clause

WHERE Clause

where-clause::= WHERE cond

where clause
Figure 24. Railroad Diagram: where-clause

cond::= expr

cond
Figure 25. Railroad Diagram: cond

GROUP BY Clause

group-by-clause::= GROUP BY expr [ "," expr ]* [ letting-clause ] [ having-clause ] | letting-clause

group by clause
Figure 26. Railroad Diagram: group-by-clause

letting-clause::= LETTING alias "=" expr [ "," alias = expr ]*

letting clause
Figure 27. Railroad Diagram: letting-clause

having-clause::= HAVING cond

having clause
Figure 28. Railroad Diagram: having-clause

set-op::= UNION | INTERSECT | EXCEPT

set op
Figure 29. Railroad Diagram: set-op

ORDER BY Clause

order-by-clause::= ORDER BY ordering-term [ "," ordering-term ]*

order by clause
Figure 30. Railroad Diagram: order-by-clause

ordering-term::= expr [ ASC | DESC ]

ordering term
Figure 31. Railroad Diagram: ordering-term

LIMIT Clause

limit-clause::= LIMIT expr

limit clause
Figure 32. Railroad Diagram: limit-clause

offset-clause::= OFFSET expr

offset clause
Figure 33. Railroad Diagram: offset-clause