Outdated Version
You are viewing an older version of this section. View current production version.
WITH (Common Table Expressions)
Specifies a temporary named result set, referred to as a Common Table Expression (CTE).
Syntax
WITH cte [, ...]
cte:
expression_name[(column_name, ...)]
AS
select_statement
Remarks
WITHclauses are supported as part ofSELECT,INSERT,UPDATE,DELETE, andREPLACEstatements.- SingleStore DB supports only non-recursive CTEs.
- By default, SingleStore DB will always attempt to inline CTEs into the parent query; however, you can cache CTEs through materialization to improve the performance of certain complex queries. See Materializing Common Table Expressions for more information.
- If a CTE defined in the
WITHclause is not referenced in theSELECTstatement, it has no effect on the execution of the query. - The engine variable
internal_max_cte_depthdefines the maximum number of common table expressions (CTEs) that can be nested. The default value of this variable is128.
Examples
WITH myCTE AS
(select col from myTable)
select col from myCTE;
WITH myCTE (colAlias) AS
(select col from myTable)
select colAlias from myCTE;
WITH orderCTE AS
(select o_orderkey from orders),
lineitemCTE AS
(select l_orderkey from lineitem)
select count(*) from orderCTE join lineitemCTE on o_orderkey = l_orderkey;
WITH foo AS
(WITH bar AS
(SELECT * FROM t) SELECT * FROM bar)
SELECT * FROM foo;