Query

SQL WITH (CTE)

Define a common table expression for a single statement.

Availability: Common SQL with references for SQL standard, MySQL/MariaDB, PostgreSQL, SQL Server, SQLite and Oracle Database; syntax and feature support vary by engine and version.中文

Syntax

WITH cte_name AS (SELECT ...) SELECT ... FROM cte_name;

Examples

Example (standard-style syntax). Verify supported keywords in your database.

WITH recent AS (SELECT id, total FROM orders WHERE created_at >= CURRENT_DATE - INTERVAL '30' DAY) SELECT * FROM recent;

SQLite-oriented variant; dialect behaviour may differ.

WITH recent AS (SELECT id, total FROM orders WHERE created_at >= date('now', '-30 days')) SELECT * FROM recent;

Parameters, options and clauses

Option / clauseDescription
SELECT / expressionChoose output columns, expressions, aliases or functions.
FROM / JOINChoose source tables and combine related rows.
WHEREFilter rows before grouping; use IS NULL for null checks.
GROUP BY / HAVINGGroup rows and filter aggregate groups.
ORDER BYSort the result; ASC is commonly the default and DESC reverses it.
LIMIT / OFFSET / FETCHLimit or skip rows; syntax differs by database dialect.

Dialect references

Safety note

Review a command and its target before running it. Commands that alter files, services, accounts, disks, permissions or databases may be difficult to reverse. Test in a safe environment and keep backups.

Official reference ↗Back to directory