You are viewing an older version of this section. View current production version.
Join the SingleStore Community Today
Get expert advice, develop skills, and connect with others.

WITH (Common Table Expressions)

Specifies a temporary named result set, referred to as a Common Table Expression (CTE).


WITH cte [, ...]

    expression_name[(column_name, ...)]


  • WITH clauses are supported as part of SELECT, INSERT, UPDATE, DELETE, and REPLACE statements.
  • MemSQL supports only non-recursive CTEs.
  • By default, MemSQL 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 the SELECT statement, it has no effect on the execution of the query.


memsql> WITH myCTE AS
(select col from myTable)
select col from myCTE;

memsql> WITH myCTE (colAlias) AS
(select col from myTable)
select colAlias from myCTE;

memsql> 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;