WITH
Use WITH
to specify a Common Table Expression.
What is a Common Table Expression (CTE)?
A Common Table Expression (CTE) is a temporary result set that you can reference within a SELECT
, INSERT
, UPDATE
, or DELETE
statement. CTEs help to break down complex queries into more readable parts and can be referenced multiple times within the same query.
Basic syntax of CTE
CTEs are typically defined using the WITH
keyword. The basic syntax is as follows:
WITH cte_name [(column1, column2, ...)] AS (
QUERY
)
SELECT ...
FROM cte_name;
Examples
Non-recursive CTE
WITH cte AS (SELECT number FROM numbers LIMIT 2) SELECT * FROM cte t1, cte t2;
+--------+--------+
| number | number |
+--------+--------+
| 0 | 0 |
| 0 | 1 |
| 1 | 0 |
| 1 | 1 |
+--------+--------+
If a parenthesized list of names follows the CTE name, those names are the column names:
WITH cte (col1, col2) AS
(
SELECT 1, 2
UNION ALL
SELECT 3, 4
)
SELECT col1, col2 FROM cte;
The number of names in the list must be the same as the number of columns in the result set.
+------+------+
| col1 | col2 |
+------+------+
| 1 | 2 |
| 3 | 4 |
+------+------+
Join two CTEs:
WITH
cte1 AS (SELECT number AS a FROM NUMBERS LIMIT 2),
cte2 AS (SELECT number AS b FROM NUMBERS LIMIT 2)
SELECT * FROM cte1 JOIN cte2
ON cte1.a = cte2.b;
+------+------+
| a | b |
+------+------+
| 1 | 1 |
| 0 | 0 |
+------+------+
Recursive CTE
Recursive CTE is not implemented currently.
当前内容版权归 GreptimeDB 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 GreptimeDB .