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
WITH
clauses are supported as part ofSELECT
,INSERT
,UPDATE
,DELETE
, andREPLACE
statements.- 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
WITH
clause is not referenced in theSELECT
statement, it has no effect on the execution of the query. - The engine variable
internal_max_cte_depth
defines 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;