Closed nene closed 4 months ago
WITH
[NOT] MATERIALIZED
( select | values | insert | update | delete )
SEARCH {BREADTH | DEPTH} FIRST BY column_name [, ...] SET search_seq_col_name
CYCLE col [, ...] SET cycle_mark_col [TO cycle_mark_value DEFAULT cycle_mark_default] USING cycle_path_col
SELECT
DISTINCT ON (...)
[TEMPORARY | TEMP | UNLOGGED] [TABLE] tablename
FROM
ONLY tablename
tablename *
AS alias (col1_alias, col2_alias, ...)
TABLESAMPLE sampling_method (...) [ REPEATABLE (seed) ]
LATERAL (select)
LATERAL table_func(..)
LATERAL ROWS FROM(..)
func(...) WITH ORDINALITY
func(...) AS (column_definition, ...)
ROWS FROM ( func(), ... )
ROWS FROM ( func() AS (column_definition, ... ), ... )
ROWS FROM ( ... ) [WITH ORDINALITY]
GROUP BY
ALL | DISTINCT
( )
(expr1, expr2, ...)
ROLLUP (...)
CUBE (...)
GROUPING SETS (...)
WINDOW
ORDER BY
USING operator
NULLS {FIRST | LAST}
LIMIT count
LIMIT ALL
OFFSET start [ ROW | ROWS ]
FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } { ONLY | WITH TIES }
FOR
FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE }
OF table_name [, ...]
NOWAIT | SKIP LOCKED
TABLE
TABLE ONLY
table_name *
UNION
INTERSECT
EXCEPT
LIMIT
OFFSET
FETCH
VALUES
SELECT syntax
WITH
clause[NOT] MATERIALIZED
( select | values | insert | update | delete )
in addition to just selectSEARCH {BREADTH | DEPTH} FIRST BY column_name [, ...] SET search_seq_col_name
CYCLE col [, ...] SET cycle_mark_col [TO cycle_mark_value DEFAULT cycle_mark_default] USING cycle_path_col
SELECT
clauseDISTINCT ON (...)
[TEMPORARY | TEMP | UNLOGGED] [TABLE] tablename
FROM
clauseONLY tablename
tablename *
AS alias (col1_alias, col2_alias, ...)
TABLESAMPLE sampling_method (...) [ REPEATABLE (seed) ]
LATERAL (select)
LATERAL table_func(..)
LATERAL ROWS FROM(..)
func(...) WITH ORDINALITY
func(...) AS (column_definition, ...)
ROWS FROM ( func(), ... )
ROWS FROM ( func() AS (column_definition, ... ), ... )
ROWS FROM ( ... ) [WITH ORDINALITY]
GROUP BY
clauseALL | DISTINCT
( )
(expr1, expr2, ...)
ROLLUP (...)
CUBE (...)
GROUPING SETS (...)
WINDOW
clauseORDER BY
USING operator
NULLS {FIRST | LAST}
LIMIT count
LIMIT ALL
OFFSET start [ ROW | ROWS ]
FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } { ONLY | WITH TIES }
FOR
clauseFOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE }
OF table_name [, ...]
NOWAIT | SKIP LOCKED
TABLE
clauseTABLE ONLY
table_name *
WITH
UNION
/INTERSECT
/EXCEPT
ORDER BY
,LIMIT
,OFFSET
,FETCH
FOR
VALUES
statementORDER BY
,LIMIT
,OFFSET
,FETCH